我收到Stale引用异常(Element不再 有效),我使用c# - Webdriver进行自动化。
我正在使用Selenium来实现自动化框架。在那我用过 EventFiringWebDriver类的Selenium事件。听取每一个人的意见 InterenetExplorerWebdriver事件(如Click()或SendKeys())。在 EventFiringWebDriver类的事件就像 (ElementClicked,ElementValueChanged)我已经实现了逻辑 将WebElementEventArgs对象的属性记录到基于XML的日志 文件。所以在执行结束时我可以看到细节 以XSLT格式执行每个测试用例并跟踪功能 错误。
代码: -
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.
}
}
在我使用硒自动化的应用程序中。我有一些文字 框和按钮,EventFiringWebDriver类XMLLogging工作 通过测试用例执行正确的文本框但是 对于按钮或链接,它有时会给出“元素号” 更长的有效“陈旧的引用异常(某些按钮属于 类型展开崩溃导致DOM更改,并在我的应用程序中 我有一个任务页面,它定期刷新 经常出现陈旧的引用异常)
Webdriver点击在整个执行过程中正常工作但是 EventFiringWebDriver无法识别对象和Stale引用 异常来了
请帮帮我......或者请告诉我获取细节的方法 网页对象(如按钮,链接),以便我可以实现 记录功能(我使用的是C#-webdriver)/
答案 0 :(得分:0)
StaleElementReferenceException
表示您正在访问不再存在的元素的属性。
您需要在DOM更改之前收集元素的所有必需属性值。
所以如果你想:
你需要:
my_elements_name
)my_elements_name
变量记录该元素的名称,而不是元素本身。在python中它看起来像这样:
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'