无法使用 Selenium 在网页上找到按钮路径 (Python)

Unable to Locate Button path on a webpage using Selenium (Python)

提问人:Alex 提问时间:8/31/2019 最后编辑:frianHAlex 更新时间:9/2/2019 访问量:321

问:

我正在尝试自动登录一个名为 Smarkets 的“投注”网站。我正在使用 Selenium(带有 Python)来做到这一点。我可以让我的代码导航到网站“https://smarkets.com”,单击右上角的小按钮,然后在弹出的窗口中自动输入我的电子邮件和密码。下一阶段是我的代码自动单击该弹出窗口中的大按钮,但我似乎无法找到它。检查此按钮的 HTML 元素将显示以下内容:"Log in""Log In"

<button class = "micro-button -accented "  type = "submit">Log In</button>==$0

没有别的 - 没有 , , 等等。从上面的代码行中,我发现 Xpath 是:IDdiv class name

//*[@id="smarkets"]/div[3]/div/div/div[1]/form/button

因此,在我的代码中,我试图通过复制上面的 Xpath 来找到此按钮:

signInButton = browser.find_element_by_xpath("//*[@id="smarkets"]/div[3]/div/div/div[1]/form/button")

但是,当我运行此代码时,我收到一个语法错误。请帮忙 - 我花了几个小时试图了解我哪里出了问题......"invalid syntax"

python selenium-webdriver xpath webdriver

评论


答:

3赞 Jose Angel Sanchez 8/31/2019 #1

我认为你的问题出在引号上,你能试试这个吗?

signInButton = browser.find_element_by_xpath("""//*[@id="smarkets"]/div[3]/div/div/div[1]/form/button""")

原因始终是代码侧面的内容,而不是服务器或任何其他类型的错误。syntax error

python 中的三引号允许您格式化字符串内的任何(几乎)字符。

如果添加一个,则可以包含偶数变量f

f"""Text text {your_variable}"""

更多信息在这里

评论

0赞 Alex 8/31/2019
非常感谢 - 它终于起作用了!你能解释一下为什么你把它括在两个双引号里吗?
0赞 Jose Angel Sanchez 8/31/2019
当然,更新我的答案
3赞 supputuri 8/31/2019 #2

最佳做法是将属性值包装在 xpath 中,并将整个 xpath 包装在其中,这样您就不会遇到此类问题。single quotesdouble quotes

示例代码:

普通 XPath

tag[@attribute='属性值']

在代码中使用:

# when using above xpath in python code
driver.find_element_by_xpath("//tag[@attribute='attribute value']")

因此,在您的情况下,只需更改以下行即可。

signInButton = browser.find_element_by_xpath("//*[@id='smarkets']/div[3]/div/div/div[1]/form/button")

如果你真的想在你的 xpath 中使用双引号,那么你可以使用三引号来包装整个 xpath,正如 Angel Sanchez 提到的@Jose但我看不出你为什么要把事情复杂化。

0赞 Aditya Teja Gaddam 9/1/2019 #3

一旦我尝试过,您能否尝试使用此代码

browser.find_element_by_xpath("//a[text()='Log in']").click();