我正在尝试检查一个复选框,但它导致了陈旧的elemnt异常

时间:2014-02-10 12:17:55

标签: python selenium selenium-webdriver

整个页面已经进行了前端更改,看起来此问题已在此更改后开始。我要分享HTML的图像 - http://screencast.com/t/JDTai6cku。该解决方案不适用于定位器ID,也许CSS之类的另一个定位器可能有效。

这里是我正在尝试的代码,只有登录cal才能获得所需的URL

 def Manage(self):         
    self.login()
    driver=self.driver
    driver.get('<>')
    driver.implicitly_wait(5)
    elem=driver.find_element_by_id("stage-check-all")
    #This is the point when it throws the exception
    elem.click()
    driver.implicitly_wait(5)

这是我面临的例外 -

self.error_handler.check_response(响应)   在check_response中的文件“C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ errorhandler.py”,第164行     提出exception_class(消息,屏幕,堆栈跟踪) StaleElementReferenceException:消息:在缓存中找不到u'Element - 可能是页面因查找而改变了'

1 个答案:

答案 0 :(得分:1)

错误#1:

<input>代码未使用相应的</input>代码关闭。

您是否可以访问此HTML代码?如果是,那么你应该解决这个问题。

错误#2:

函数click()不返回web元素。

您可以这样做:

driver.find_element_by_id("stage-check-all").click()

或者做:

elem = driver.find_element_by_id("stage-check-all")
elem.click()

但即使在解决了这些错误之后,你所描述的例外很可能会持续下去。

StaleElementReferenceException表示在您使用driver.get(url)加载页面后,DOM 中的内容发生了变化。因此,driver.get(url)driver.find_element_by_id("stage-check-all").click()之间存在一些您没有告诉我们的内容。

发布您的代码,我或许可以回答您的问题...