在webdriver中使用css选择器,给出错误,其他元素会收到点击?

时间:2017-09-08 07:06:57

标签: python selenium webdriver

所以下面的代码,我使用的是第一个注释掉的选项:

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()

对于格式化,很抱歉,即使网站格式正确,网站仍然会出错。

url

我有一个股票清单,有时代码运作得很好,但有时像现在这样我得到以下错误:

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似乎正常,除了我目前代码中的那个。

想知道我做错了什么或者什么是更好的解决方案。

1 个答案:

答案 0 :(得分:0)

要告诉你到底出了什么问题是非常困难的,因为这是一个有效的webdriver行为。基本上,Web驱动程序会告诉您另一个元素在视觉上位于您尝试单击的顶部。这可能是由几件事引起的:

1)测试设计不好(即某些事情真的在你的元素之上。 - 检查你的测试场景和/或元素布局

2)运行测试时屏幕分辨率/浏览器大小的差异。 - 如果你没有无头跑,那么你可以直观地检查发生了什么。或者,在每次测试开始之前将浏览器大小设置为预定义大小。

3)网络驱动程序出现故障的可能性非常小......

如果您确定所有内容都已正确完成,那么可以解决此类问题 - 请回到旧的browser.execute_script。您可以通过在浏览器内部运行注入的javascript来传递测试场景的有问题状态。但是,它不会做webdriver那样的验证。所以要小心使用它。