Selenium 2 RemoteWebDriver -StaleElementReferenceException:由“id”指定的元素;不再有效

发布于 2024-11-29 15:48:34 字数 2843 浏览 1 评论 0原文

我在集线器模式下使用 2.4.0 selenium 服务器,其中有两个节点,每个节点有 5 个 Internet Explorer 实例(win7 上的 IE8) - 这都在同一台 Win7 计算机上运行

下面的代码在最终调用 FindElements 时抛出异常在 RemoteWebDriver 上,

_driver.Navigate().GoToUrl(@"http://devrsql714/webpages/parentview.aspx");
            var wait = new WebDriverWait(_driver, new TimeSpan(0, 0, 40));
            wait.Until(d => d.FindElement(By.ClassName("TitleAlternative")));
            Console.WriteLine(string.Format("Window title: {0}", _driver.Title));
            var element = _driver.FindElementById("txtLessonID");
            element.SendKeys("13814");
            var button = _driver.FindElementById("btnLessonID");
            button.Click();
            wait = new WebDriverWait(_driver, new TimeSpan(0, 0, 40));
            var link = wait.Until(d => d.Title.Contains("01652-06-A"));
            Console.WriteLine(string.Format("Window title: {0}", _driver.Title));
            Assert.IsTrue(_driver.Title.Contains("01652"));
            Console.WriteLine(string.Format("page source: {0}", _driver.PageSource));
            _driver.FindElementsByTagName("DIV");

我可以看到浏览器加载、导航、填写文本框并单击按钮 - 页面刷新标题更改 - 断言通过(这是在带有 Gallio 的 MbUnit 中运行),

但后续调用_driver.FindElementsByTagName 抛出下面的异常 - 我添加了等待,以防出现问题并且任何查找元素都会导致相同的异常,

我做错了什么? - 驱动程序上的其他属性,例如标题和页面源(具有例外的内容)

请注意相同的代码,但将 RemoteWebDriver 交换为本地 InternetExplorerDriver 不会引发异常

在这两种情况下,功能都设置为忽略保护模式:

DesiredCapabilities capabilities = DesiredCapabilities.InternetExplorer();
            capabilities.Platform = new Platform(PlatformType.Any);
            capabilities.SetCapability("ignoreProtectedModeSettings", true);

Execute
OpenQA.Selenium.StaleElementReferenceException: Element specified by 'id' is no longer valid (WARNING: The server did not provide any stacktrace information)
Build info: version: '2.4.0', revision: '13337', time: '2011-08-12 09:57:13'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_20'
Driver info: driver.version: RemoteWebDriver
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 948
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(DriverCommand driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 805
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElements(String mechanism, String value) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 851
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementsByTagName(String tagName) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 622
   at SeleniumTests.DemoTest.AnotherTest() 

I'm using the 2.4.0 selenium server in hub mode with two nodes each with 5 instances of Internet explorer (IE8 on win7) - this is all running on the same Win7 machine

The following code throws the exception on the final call to FindElements on the RemoteWebDriver

_driver.Navigate().GoToUrl(@"http://devrsql714/webpages/parentview.aspx");
            var wait = new WebDriverWait(_driver, new TimeSpan(0, 0, 40));
            wait.Until(d => d.FindElement(By.ClassName("TitleAlternative")));
            Console.WriteLine(string.Format("Window title: {0}", _driver.Title));
            var element = _driver.FindElementById("txtLessonID");
            element.SendKeys("13814");
            var button = _driver.FindElementById("btnLessonID");
            button.Click();
            wait = new WebDriverWait(_driver, new TimeSpan(0, 0, 40));
            var link = wait.Until(d => d.Title.Contains("01652-06-A"));
            Console.WriteLine(string.Format("Window title: {0}", _driver.Title));
            Assert.IsTrue(_driver.Title.Contains("01652"));
            Console.WriteLine(string.Format("page source: {0}", _driver.PageSource));
            _driver.FindElementsByTagName("DIV");

I can see the browser load, navigate, fillin the text box and click the button - the page refreshes the title changes - the assert passes (this is running in MbUnit with Gallio)

but the subsequent call to _driver.FindElementsByTagName throws the exception below - I added waits in case that was the issue and any find elements results in the same exception

what am I doing wrong? - other properties on the driver work such as title and page source (which has the excepted content)

Note the same code but swapping the RemoteWebDriver for a local InternetExplorerDriver does not throw the exception

In both cases capabilities were set to ignore protect mode:

DesiredCapabilities capabilities = DesiredCapabilities.InternetExplorer();
            capabilities.Platform = new Platform(PlatformType.Any);
            capabilities.SetCapability("ignoreProtectedModeSettings", true);

Execute
OpenQA.Selenium.StaleElementReferenceException: Element specified by 'id' is no longer valid (WARNING: The server did not provide any stacktrace information)
Build info: version: '2.4.0', revision: '13337', time: '2011-08-12 09:57:13'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_20'
Driver info: driver.version: RemoteWebDriver
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 948
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(DriverCommand driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 805
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElements(String mechanism, String value) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 851
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementsByTagName(String tagName) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs:line 622
   at SeleniumTests.DemoTest.AnotherTest() 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

平安喜乐 2024-12-06 15:48:34

这显然是 selenium 服务器 2.4.0 版本中的一个错误。降级到 2.3.0 可能会使问题消失。请参阅 selenium-users 邮件列表了解更多信息。

This is apparently a bug in version 2.4.0 of the selenium server. Downgrading to 2.3.0 might make the problem go away. See this thread on the selenium-users mailing list for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文