所以下面的代码,我使用的是第一个注释掉的选项:
driver.find_element_by_css_selector("div.show_hide:nth-child(7) > h5:ntchild(1)").click()
我尝试过的其他选项:
driver.find_element_by_xpath('// *[ @ id = "show-hide"] / h5').click()
driver.find_element_by_css_selector('#show-hide > h5').click()
对于格式化,很抱歉,即使网站格式正确,网站仍然会出错。
我有一个股票清单,有时代码运作得很好,但有时像现在这样我得到以下错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 71, in opt_data
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 74, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 457, in _execute
return self._parent.execute(command, params)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 233, in execute
self.error_handler.check_response(response)
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Element <h5>...</h5> is not clickable at point (791, 654). Other element would receive the click: <h5>...</h5>
(Session info: chrome=60.0.3112.90)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.15063 x86_64)
我尝试过使用其他selectors
,但click
element
似乎正常,除了我目前代码中的那个。
想知道我做错了什么或者什么是更好的解决方案。
答案 0 :(得分:0)
要告诉你到底出了什么问题是非常困难的,因为这是一个有效的webdriver行为。基本上,Web驱动程序会告诉您另一个元素在视觉上位于您尝试单击的顶部。这可能是由几件事引起的:
1)测试设计不好(即某些事情真的在你的元素之上。 - 检查你的测试场景和/或元素布局
2)运行测试时屏幕分辨率/浏览器大小的差异。 - 如果你没有无头跑,那么你可以直观地检查发生了什么。或者,在每次测试开始之前将浏览器大小设置为预定义大小。
3)网络驱动程序出现故障的可能性非常小......
如果您确定所有内容都已正确完成,那么可以解决此类问题 - 请回到旧的browser.execute_script。您可以通过在浏览器内部运行注入的javascript来传递测试场景的有问题状态。但是,它不会做webdriver那样的验证。所以要小心使用它。