Невозможно запустить браузер IE, используя Selenium2 (Webdriver) с Java
Я не могу запустить браузер IE для запуска моих автоматических тестов селена, написанных на Java. Я использую Windows 7 и IE 9. Ниже мой код:
См. приложение.
public class GoogleNews {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
ArrayList al = new ArrayList();
@Before
public void setUp() throws Exception {
//driver = new FirefoxDriver();
driver =new InternetExplorerDriver();
baseUrl = "https://news.google.co.in/";
}
@Test
public void testApple() throws Exception {
driver.get(baseUrl);
}
}
8 ответов
Необходимо установить одинаковый уровень безопасности во всех зонах. Для этого выполните следующие действия:
- Откройте IE
- Зайдите в Инструменты -> Свойства обозревателя -> Безопасность
- Установка всех зон (Интернет, Локальная интрасеть, Доверенные сайты, Ограниченные сайты) в один и тот же защищенный режим, включенный или отключенный, не имеет значения.
Наконец, установите Zoom level на 100%, щелкнув правой кнопкой мыши на шестерне, расположенной в верхнем правом углу, и включив строку состояния. Уровень масштабирования по умолчанию теперь отображается в правом нижнем углу.
Как следует из трассировки стека, вам нужно установить одинаковые настройки защищенного режима для всех зон в IE. Прочтите почему здесь: http://jimevansmusic.blogspot.in/2012/08/youre-doing-it-wrong-protected-mode-and.html
и быстрый способ перехода по той же ссылке: "В IE в меню" Сервис "(или значок шестеренки на панели инструментов в более поздних версиях) выберите" Свойства обозревателя ". Перейдите на вкладку" Безопасность ". В нижней части диалогового окна для В каждой зоне вы должны увидеть флажок "Включить защищенный режим." Установите значение флажка на одно и то же значение, отмеченное или не отмеченное для каждой зоны ".
Следующий фрагмент Java-кода WebDriver должен работать для запуска IE. Код будет игнорировать настройку параметров защищенного режима для всех зон в браузере IE.
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
File file = new File("D:\\Ripon Al Wasim\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.google.com/");
Загрузите IEDriverServer и извлеките его в нужное место и установите абсолютный путь (в моем примере выше это был "D:\Ripon Al Wasim\IEDriverServer.exe")
Вместо того, чтобы использовать Абсолютный путь для IEDriverServer.exe, лучше использовать относительный путь в соответствии с проектом.
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
File fil = new File("iDrivers\\IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", fil.getAbsolutePath());
WebDriver driver = new InternetExplorerDriver(capabilities);
driver.get("https://www.irctc.co.in");
Чтобы решить эту проблему, вы должны сделать две вещи:
Вам нужно будет установить запись реестра на целевом компьютере, чтобы драйвер мог поддерживать соединение с экземпляром Internet Explorer, который он создает.
Измените несколько настроек браузера Internet Explorer на этом компьютере (где вы хотите запустить автоматизацию).
1 Настройка ключа реестра / записи:
Чтобы установить раздел реестра или запись, вам необходимо открыть "Редактор реестра".
Чтобы открыть "Редактор реестра", нажмите клавишу Windows + клавишу алфавита r, которая откроет "Запуск окна", затем введите "regedit" и нажмите ввод.
Или нажмите кнопку Windows и введите "regedit" в меню "Пуск" и нажмите "Ввод". Теперь, в зависимости от типа вашей ОС, следует ли 32/64 бита выполнять соответствующие шаги.
32-разрядная версия Windows: перейдите по этому адресу - "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl" и проверьте ключ "FEATURE_BFCACHE".
64-разрядная версия Windows: перейдите по этому адресу - HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl и проверьте наличие ключа "FEATURE_BFCACHE". Обратите внимание, что подраздел FEATURE_BFCACHE может присутствовать или не присутствовать, и его следует создать, если он отсутствует.
Важное замечание: Внутри этого ключа создайте значение DWORD с именем iexplore.exe со значением 0.
2 Изменить настройки браузера Internet Explorer:
Нажмите на кнопку настройки и выберите "Свойства обозревателя".
В окне "Свойства обозревателя" перейдите на вкладку "Безопасность".
Теперь выберите опцию "Интернет" и снимите флажок "Включить защищенный режим" и измените "Уровень безопасности" на низкий.
Теперь выберите опцию "Локальная интрасеть" и измените "Уровень безопасности" на низкий.
Теперь выберите опцию "Надежные сайты" и измените "Уровень безопасности" на низкий.
- Теперь нажмите кнопку "Применить", может появиться всплывающее предупреждение, нажмите кнопку "ОК" для предупреждения и затем кнопку "ОК" в окне "Свойства обозревателя".
- После этого перезапустите браузер.
- Идти к
IE->Tools->Internet Options
, - Перейдите на вкладку "Безопасность".
- Либо включите / отключите защищенный режим для всех (Интернет, локальная интрасеть, доверенные и запрещенные сайты).
Хотел поделиться реальным кодом, так как мало кто все еще может не понимать, как его реализовать. Это для реализации C# NUNIT. Это необходимо сделать, потому что ваша компания может не разрешить вам изменить настройки безопасности по умолчанию по очевидным причинам. Удачи!
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
options.IgnoreZoomLevel = true;
driver = new
InternetExplorerDriver("C:\\Users\\stdd\\Desktop\\SLL\\SLLAutomation" +
"\\Clysis\\STGSearch\\STGClaSearch\\Driver\\", options);
driver.Manage().Window.Maximize();
Для NighwatchJS используйте:
"ie" : {
"desiredCapabilities": {
"browserName": "internet explorer",
"javascriptEnabled": true,
"acceptSslCerts": true,
"allowBlockedContent": true,
"ignoreProtectedModeSettings": true
}
},
Мне не удалось вручную изменить настройки защищенного режима в моей системе, так как они были отключены. Но приведенный ниже фрагмент VBA для обновления значений реестра помог мне.
Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set ScriptMe=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
'Disable protected mode for local intranet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
'Disable protected mode for trusted pages'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
'Disable protected mode for internet'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
'Disable protected mode for restricted sites'
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\"
strValueName = "2500"
dwValue = 0
ScriptMe.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
msgbox "Protected Mode Settings are updated"
Просто скопируйте и вставьте приведенный выше код в блокнот, сохраните его с расширением.vbs и дважды щелкните по нему!
Теперь попробуйте снова запустить свой сценарий автоматизации
Перед началом работы с Internet Explorer и Selenium Webdriver Рассмотрим эти два важных правила.
- Уровень масштабирования: должен быть установлен по умолчанию (100%) и
- Настройки зоны безопасности: должны быть одинаковыми для всех. Параметры безопасности должны быть установлены в соответствии с разрешениями вашей организации.
Как установить это?
- Просто зайдите в Internet Explorer, сделайте обе вещи вручную. Это оно. Не секрет
- Сделай это через свой код.
Способ 1:
Возможности DesiredCapabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");
WebDriver driver= new InternetExplorerDriver(capabilities);
driver.get(baseURl);
//Identify your elements and go ahead testing...
Это определенно не будет отображать никаких ошибок, и браузер откроется, а также перейдет к URL.
НО Это не будет идентифицировать какой-либо элемент, и, следовательно, вы не можете продолжить.
Зачем? Потому что мы просто подавили ошибку и попросили IE открыть и получить этот URL. Однако Selenium будет определять элементы только в том случае, если масштаб браузера равен 100%, т.е. дефолт. Итоговый код будет
Метод 2 Надежный и полный способ доказательства:
DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
System.setProperty("webdriver.ie.driver","D:\\IEDriverServer_Win32_2.33.0\\IEDriverServer.exe");
WebDriver driver= new InternetExplorerDriver(capabilities);
driver.get(baseURl);
driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,"0"));
//Identify your elements and go ahead testing...
Надеюсь это поможет. Дайте мне знать, если потребуется дополнительная информация.