首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EventFiringWebDriver侦听器的陈旧引用异常

问EventFiringWebDriver侦听器的陈旧引用异常
EN

Stack Overflow用户
提问于 2012-01-12 04:56:50
回答 1查看 1.7K关注 0票数 0

我得到了过时的引用异常(元素不再有效),我正在使用c# - Webdriver自动化。

我正在使用Selenium作为自动化框架。在此,我使用了Selenium事件的EventFiringWebDriver类。它侦听InterenetExplorerWebdriver的每个事件(如Click()或SendKeys())。在EventFiringWebDriver类的事件(ElementClicked,ElementValueChanged)中,我实现了将WebElementEventArgs对象的属性记录到基于XML的日志文件的逻辑。因此,在执行结束时,我可以看到XSLT格式的每个测试用例的执行细节,并跟踪功能错误。

代码:-

代码语言:javascript
复制
public class SeleniumEventListener : EventFiringWebDriver
{
     public SeleniumEventListener(IWebDriver webDriver):base(webDriver)
     {
             ElementClicked += new EventHandler<WebElementEventArgs>SeleniumEventListener_ElementClicked);
//more events handled here..
 }
   void SeleniumEventListener_ElementValueChanged(object sender,WebElementEventArgs e)
 {
           LogPassedStep(e)
   }
   private LogPassedStep(e)
   {
          string title = e.Element.value;
            string status = "clicked"

         //XML based logging here.
   }

}

在我的应用程序中,我使用selenium实现了自动化。我有一些文本框和按钮,EventFiringWebDriver类XMLLogging在整个测试用例执行过程中对文本框正确工作,但对于一些按钮或链接,它提供了“元素不再有效”的陈旧引用异常(有些按钮的展开折叠类型导致DOM更改,而在我的应用程序中,任务页面有一个任务页面,它会定期刷新,因为陈旧的引用异常经常出现)

Webdriver单击整个执行过程中的工作正常,但是EventFiringWebDriver无法识别对象,并且出现过时的引用异常。

请帮帮我..。或者,请建议我如何获得网页对象的详细信息(如按钮、链接),以便实现日志功能(我使用的是C#-webdriver)/

EN

回答 1

Stack Overflow用户

发布于 2012-01-12 07:32:53

StaleElementReferenceException意味着您正在访问元素的属性,该属性不再存在。在DOM更改之前,您需要收集元素的所有所需属性值。

所以如果你想:

  1. 查找页面上的元素
  2. 使元素消失(例如打开另一个页面)
  3. 记录该元素的名称

你需要:

页上的

  1. 查找元素在变量
  2. 元素中存储元素的名称消失(例如打开另一个页面),使用my_elements_name变量而不是元素本身来记录元素的名称。

在python中,它将如下所示:

代码语言:javascript
复制
from selenium.webdriver import Firefox


browser = Firefox()
browser.get('http://google.com')

element = browser.find_element_by_id('lst-ib')
element_name = element.get_attribute('name')

browser.get('http://en.wikipedia.org')

# this will raise 'StaleElementReferenceException':
print element.get_attribute('name')

# and this will work:
print element_name
# prints out: 'q'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8830321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档