2016-04-26 230 views
1

我需要点击页面中的一个元素,但页面每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> 

如何克服这个问题。

回答

1

如果页面每两秒钟刷新一次,这个结果并不是所有人都感到惊讶。您等待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功能

+0

我抛出一个错误,文件“/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

+0

对不起,已更新回答 – e4c5

+0

仍然元素在点(220,163)不可点击。其他元素会收到点击错误,看到 – Saran

相关问题