2012-06-22 6 views
4

Я недавно обновил Selenium 2.24.1, чтобы получить работу Firefox 13. С помощью этого обновления вы должны запустить исполняемый файл, похожий на chromedriver.exe, для отправки событий в IE. Однако мне не повезло в том, что тесты запускаются с IE. Для этого, чтобы работать с хром, я, очевидно, также должен установить бит webdriver.chrome.driver, но в нем все хорошо работает и Firefox с тем же кодом.Selenium WebDriver и InternetExplorer

Вот мой исходный код:

public class GoogleTest { 

@Test 
public void test() throws Exception { 
    System.setProperty("webdriver.ie.driver", "IEDriverServer.exe"); 
    final WebDriver driver = new InternetExplorerDriver(); 
    driver.get("http://www.google.com"); 
    driver.findElement(By.name("q")).sendKeys("test"); 
    driver.findElement(By.name("q")).submit(); 
    driver.quit(); 
} 

}

Однако я поздоровался с этим трассировки стека при выполнении этого теста

org.openqa.selenium.NoSuchElementException: Unable to find element with name == q (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 395 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.24.1', revision: '17205', time: '2012-06-19 15:28:49' 
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_01' 
Driver info: driver.version: RemoteWebDriver 
Session ID: e20f8370-00ed-4bf6-a4fa-a0c09c2b6d8c 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188) 
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) 
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472) 
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:242) 
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:303) 
at org.openqa.selenium.By$ByName.findElement(By.java:291) 
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:234) 
+0

Этот точный код хорошо работает для IE8 и Windows XP SP3 32-бит. Какой IE и/или ОС вы используете? Вы _absolutely_ уверены, что используете новейший IEDriverServer.exe, а не старый? Открывает ли он страницу Google? –

+0

Я на IE9 Windows 7. Я вытащил из раздела загрузки только вчера. Я пробовал 64-разрядную и 32-разрядную версии IEDriverServer.Страница Google открывается просто отлично, но как только я пытаюсь взаимодействовать с драйвером, это похоже на то, что информация никогда не отправляется драйверу. – Scott

+0

Хорошо. СРОЧНО? Скажем, набрав форму на локальной странице html, содержащей один вход? Или ... ну, что-нибудь? –

ответ

12

Это, наверное, действительно очевидна, но, как вы не упоминали об этом в своем оригинальном посте, и вы только что загрузили драйвер, и ваше внутреннее игрушечное приложение работает, вы дважды проверили настройки безопасности в IE, как указано на Код кодовой страницы IEDriver:

В IE 7 или выше в Windows Vista или Windows 7 вы должны установить для параметра «Защищенный режим» для каждой зоны одинаковое значение. Значение может быть включено или выключено, если оно одинаково для каждой зоны. Чтобы установить параметры защищенного режима, выберите «Свойства обозревателя ...» в меню «Сервис» и перейдите на вкладку «Безопасность». Для каждой зоны в нижней части вкладки с надписью «Включить защищенный режим» будет установлен флажок.

Если вы использовали предыдущую версию Selenium перед тем, как вы, вероятно, уже сделали это, но я решил, что стоит проверить только, чтобы быть уверенным ...

+2

Последний набор обновлений решил установить эти параметры, и INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS ничего не сделал. – Scott

+1

Спасибо, я забыл об этом шаге (используя другую виртуальную машину Windows, чем первоначально). Я был в режиме отладки, и webdriver ничего не мог найти, не смог распечатать источник страницы, все, что он мог сделать, это открыть страницу. Я был в тупике. Еще раз спасибо! – JCarter

+0

Это не работает для меня В браузере IE8. Я включаю и выключаю «Включить защищенный режим», затем попытаюсь, но я все еще получаю ошибку в eclipse , пожалуйста, проверьте мой код http://pastebin.com/TBxhptUB –

1

Ну, сообщение об ошибке вводит в заблуждение по крайней мере, это было в моем случае. У меня была система, которая была заблокирована системным администратором в Защищенном режиме: Выкл. Поэтому я не смог переключить защищенный режим. Затем я понял, что у системы есть пользователь admin, поэтому зарегистрировался как пользователь admin и попытался переключить Защищенный режим. Он все еще был отключен. Затем я запускаю Selenium под учетной записью администратора, и все работает отлично.

Для запуска селена вам может потребоваться авторизация с правами администратора. Этот трюк сработал для меня.

0

Используйте приведенный ниже код

System.setProperty("webdriver.ie.driver", "E:\\Selenium\\workspace\\IEDriverServer.exe"); 
WebDriver driver = new InternetExplorerDriver(); 
0

Проверьте сервер IEWebdriver, который вы загрузили. Если вы используете 32-битный IE, загрузите и используйте 32-битный IEWebdriver.

Надеюсь, что это поможет.

0

У меня были очень похожие проблемы. В настройках Интернета была установлена ​​настройка, которая должна быть включена, чтобы заставить ее работать. Дополнительно> Настройки> Безопасность> Разрешить запуск активного содержимого в файлах на моем компьютере.

Как только я установил этот флажок, мои тесты IE работали должным образом и могли находить элементы и взаимодействовать с браузером.

Смежные вопросы