硒投掷“;元素不再有效”;在WaitForElement之后

本文关键字:WaitForElement 之后 有效 元素 不再 | 更新日期: 2023-09-27 18:21:25

这是一个奇怪的问题。我正在将SeleniumWebDriver与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命令(这应该意味着元素存在),但运行元素。Display方法将返回false。

所以Selenium等待元素出现,然后继续,只抛出一个错误,说这个错误不存在。

--

额外信息:有时测试用例的执行不会出现问题。有时它会回来的"元素不再有效/Stale元素引用异常,我在这里对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

硒投掷“;元素不再有效”;在WaitForElement之后

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

但是。。。我想我也遇到过类似的事情。我等待一个元素存在,然后尝试单击/使用同一个元素。如果它超过了等待时间,则意味着元素已经存在,但单击失败。页面上的其他内容没有更改。但我使用的是Chrome和FireFox的远程网络驱动程序和Python绑定。远程机器(Ubuntu虚拟机)和我的本地机器(W7Pro)都是64位的。

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

Python Selenium WebDriverWait和Click不一致,给出了StaleElementReferenceException()

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

因此,问题似乎在所有三种情况下都是相同的。尽管设置都略有不同。

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

所以我很想看看你能不能用它取得进展!

通过Actions交互成功解决此问题:使用OpenQA.Selenium.Interactions;

Actions action=新Actions(驱动程序);行动MoveToElement(xrmBrowser.Driver.FindElement(By.XPath("//span[包含(text(),'Contacts')]")).Click().Build().Perform();