selenium webdriver python:元素点不可点击
问题描述:
我需要点击页面中的一个元素,但页面每1-2s刷新一次(ajax调用)。使用的浏览器是Firefox。selenium webdriver python:元素点不可点击
代码:
ele = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, ".//*[@id='dojox_grid__View_1']/div/div/div/div/table/tbody/tr/td[1]/div")))
print ele
ele.click()
错误:
mouseOnover.click()
File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/webelement.py", line 74, in click
self._execute(Command.CLICK_ELEMENT)
File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/webelement.py", line 457, in _execute
return self._parent.execute(command, params)
File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/webdriver.py", line 233, in execute
self.error_handler.check_response(response)
File "/usr/lib/python2.6/site-packages/selenium-2.53.1-py2.6.egg/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Element is not clickable at point (267, 162.5). Other element would receive the click: <div style="width: 1360px; height: 621px;" id="dojox_grid_enhanced_plugins_Dialog_1_underlay" class="dijitDialogUnderlay dojoxGridFDTitlePane_underlay" tabindex="-1" data-dojo-attach-point="node"></div>
如何克服这个问题。
答
如果页面每两秒钟刷新一次,这个结果并不是所有人都感到惊讶。您等待10秒才能获取元素,但到那时页面会刷新几次,并使您持有的对象变为陈旧。陈旧元素无法点击。我的建议是等待身体元素,并迅速抓住感兴趣的元素。
wait = WebDriverWait(driver, 1)
body = wait.until(EC.element_to_be_clickable((By.TAG,'body')))
ele = wait.until(EC.element_to_be_clickable((By.XPATH, ".//*[@id='dojox_grid__View_1']/div/div/div/div/table/tbody/tr/td[1]/div")))
print ele
ele.click()
注1:您正在使用xpath来选择元素。这很慢。通常情况下,这并不重要,但在你的情况下,你是在倒计时。试着用id来取代。如果有问题的元素没有ID添加一个!注意2:如果仍然发现该元素不可点击,所有这一切之后,这是因为其他元素正在覆盖它。重叠可能是由透明的背景,所以你可能不会注意到。
仔细看看你的错误信息,它显示出width: 1360px; height: 621px
;元素正在阻碍。在这个阶段,你的CSS似乎有一个n错误。要做的最简单的事情就是通过改变它的CSS可能通过硒来隐藏这个问题元素execute javascript功能
我抛出一个错误,文件“/usr/lib/python2.6/site-packages/selenium-2.53.1- py2.6.egg/selenium/webdriver/support/expected_conditions.py“,第91行,in _element_if_visible return element if element.is_displayed()== visibility else False AttributeError:'元组'对象没有属性'is_displayed' – Saran
对不起,已更新回答 – e4c5
仍然元素在点(220,163)不可点击。其他元素会收到点击错误,看到 – Saran