Selenium 2 RemoteWebDriver -StaleElementReferenceException: элемент, указанный в 'id', больше не действителен - PullRequest
1 голос
/ 16 августа 2011

Я использую сервер Селена 2.4.0 в режиме концентратора с двумя узлами, на каждом из которых по 5 экземпляров Internet Explorer (IE8 на win7) - все это работает на одном компьютере с 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");

Я могу видеть загрузку браузера, перемещаться, заполнять текстовое поле и нажимать кнопку - страница обновляет заголовок, изменения - утверждение проходит (это выполняется в MbUnit с Gallio)

, но последующий вызов _driver.FindElementsByTagName выдает исключение ниже - я добавил ожидания в случае, если это было проблемой, и любые элементы поиска приводят к тому же исключению

Что я делаю неправильно?- работают другие свойства драйвера, такие как заголовок и источник страницы (который имеет исключенное содержимое)

Обратите внимание на тот же код, но при замене RemoteWebDriver на локальный InternetExplorerDriver исключение не выдается

Inв обоих случаях возможности игнорировались в режиме защиты:

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() 

1 Ответ

1 голос
/ 17 августа 2011

Это, видимо, ошибка в версии 2.4.0 сервера селен. Снижение до 2.3.0 может решить проблему. См. эту тему в списке рассылки пользователей selenium для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...