提问人:Alex 提问时间:8/31/2019 最后编辑:frianHAlex 更新时间:9/2/2019 访问量:321
无法使用 Selenium 在网页上找到按钮路径 (Python)
Unable to Locate Button path on a webpage using Selenium (Python)
问:
我正在尝试自动登录一个名为 Smarkets 的“投注”网站。我正在使用 Selenium(带有 Python)来做到这一点。我可以让我的代码导航到网站“https://smarkets.com”,单击右上角的小按钮,然后在弹出的窗口中自动输入我的电子邮件和密码。下一阶段是我的代码自动单击该弹出窗口中的大按钮,但我似乎无法找到它。检查此按钮的 HTML 元素将显示以下内容:"Log in"
"Log In"
<button class = "micro-button -accented " type = "submit">Log In</button>==$0
没有别的 - 没有 , , 等等。从上面的代码行中,我发现 Xpath 是:ID
div 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"
答:
我认为你的问题出在引号上,你能试试这个吗?
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}"""
更多信息在这里
评论
最佳做法是将属性值包装在 xpath 中,并将整个 xpath 包装在其中,这样您就不会遇到此类问题。single quotes
double 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但我看不出你为什么要把事情复杂化。
一旦我尝试过,您能否尝试使用此代码
browser.find_element_by_xpath("//a[text()='Log in']").click();
评论