【发布时间】:2016-10-04 04:11:35
【问题描述】:
我正在尝试使用 Python 和 selenium Web 驱动程序单击 html 页面上的按钮。
这是http://pastebin.com/112g1Gje页面的源代码。
编辑:最后的相关部分..“btn btn-primary”
我真的很接近弄清楚这一点: 类名中有空格,我用点替换了空格……这使它起作用(感谢另一个 SO 帖子)。
driver.find_element_by_css_selector(".btn.btn-primary").click()
现在我得到的错误是:
selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
所以我正在尝试类似的东西:
driver.execute_script('document.querySelector("btn.btn-primary").click()')
据我了解,我必须编写一个单击按钮的 javascript,因为该元素不可见。但这不起作用。
我得到的错误几乎无法阅读:
driver.execute_script('document.querySelector("btn.btn-primary").click()')
File "/Users/Richie/anaconda/lib/python3.5/site- packages/selenium/webdriver/remote/webdriver.py", line 461, in execute_script
{'script': script, 'args':converted_args})['value']
File "/Users/Richie/anaconda/lib/python3.5/site- packages/selenium/webdriver/remote/webdriver.py", line 233, in execute
self.error_handler.check_response(response)
File "/Users/Richie/anaconda/lib/python3.5/site- packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: document.querySelector(...) is null
有人知道吗?
【问题讨论】:
-
哇,HTML 源代码真的很难阅读。您可以让我们更轻松地只显示您想要单击的相关元素的 html。此外,检查是否有多个元素返回匹配该 css 选择器我看到至少其中两个。一个有一个id,使用起来会更好。该css选择器将是“button#button-send-feedback”
-
哎呀!是的,我认识人!真是疯了!一路走到尽头。 CTRL+F "btn btn-primary"
-
这也是第一个按钮,那是反馈按钮。我正在尝试单击消息按钮。
-
在您的第一次尝试中,错误本身会告诉您出了什么问题。您要单击的元素上还有其他内容。即 CSS 错误。使用 javascript 的第二次尝试表明您的网站上存在 javascript 错误。您必须先使用 chrome 开发工具修复这两个问题,然后才能使用 selenium。
-
解决了,谢谢大家。我现在将发布解决方案。
标签: python selenium elements clicking