gpt4 book ai didi

c# - Selenium 在 WaitForElement 之后抛出 "Element No Longer Valid"

转载 作者:行者123 更新时间:2023-11-30 17:46:45 25 4
gpt4 key购买 nike

这里有一个奇怪的地方。我将 Selenium WebDriver 与 IE11 和我正在编写的 C# 测试用例一起使用。

      driver.Navigate().GoToUrl("testpage.aspx");
WaitUtility.WaitForElement(By.Id("HEADER_ID")); //Waits for element to be present
var element = Driver.FindElement(By.Id("HEADER_ID")); //fetches the element
Assert.IsTrue(element.Displayed); //verifies that the element is present

奇怪的是,上面的代码将成功运行 WaitForElement 命令(这应该意味着该元素存在)但是 element.Display 方法将返回 false。

所以 Selenium 等待一个元素出现,然后才继续,然后抛出一个错误,指出该错误不存在。

--

额外信息:有时测试用例会毫无问题地执行。有时,它会返回“元素不再有效/我在 StackOverflow 上研究过的陈旧元素引用异常,但似乎没有示例适用于我的情况,因为通常在使用相同定义重新创建 DOM 对象时抛出此异常属性,但在我的例子中,对象是使用 WaitForElement 方法成功定位的,我无法想象在调用下一个方法“element.Displayed”之前我的元素已被重新创建或未附加到 DOM。

Selenium version: x64 Selenium InternetExplorerDriver 2.42.0
OS: Windows 7
Browser: Internet Explorer 11
Browser version: 11.0.9600

最佳答案

我没有足够的代表发表评论 - 恐怕这不是答案/解决方案。

但是......我想我遇到过类似的事情。我等到一个元素存在,然后尝试单击/使用相同的元素。如果它过了等待时间,那将意味着该元素在那里,但随后点击失败。页面上的任何其他内容均未更改。但我在 Chrome 和 FireFox 中使用 remotewebdriver 和 Python 绑定(bind)。远程机器(Ubuntu VM)和我的本地机器(W7Pro)都是 64 位的。

当我搜索类似的例子时,我发现了这个:

Python Selenium WebDriverWait and Click inconsistently giving StaleElementReferenceException()

...这是相同的症状。还在用 Python。但不使用远程驱动程序。

所以问题似乎在所有三个实例中都是相同的。尽管设置都略有不同。

我从来没有找到解决方案。据我所知,上面链接中的那个人也没有。

所以我很想看看你是否能用它取得任何进展!

关于c# - Selenium 在 WaitForElement 之后抛出 "Element No Longer Valid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com