Невозможно запустить браузер 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 ответов

Решение

Необходимо установить одинаковый уровень безопасности во всех зонах. Для этого выполните следующие действия:

  1. Откройте IE
  2. Зайдите в Инструменты -> Свойства обозревателя -> Безопасность
  3. Установка всех зон (Интернет, Локальная интрасеть, Доверенные сайты, Ограниченные сайты) в один и тот же защищенный режим, включенный или отключенный, не имеет значения.

Наконец, установите 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");          

Чтобы решить эту проблему, вы должны сделать две вещи:

  1. Вам нужно будет установить запись реестра на целевом компьютере, чтобы драйвер мог поддерживать соединение с экземпляром Internet Explorer, который он создает.

  2. Измените несколько настроек браузера 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:

  • Нажмите на кнопку настройки и выберите "Свойства обозревателя".

  • В окне "Свойства обозревателя" перейдите на вкладку "Безопасность".

  • Теперь выберите опцию "Интернет" и снимите флажок "Включить защищенный режим" и измените "Уровень безопасности" на низкий.

  • Теперь выберите опцию "Локальная интрасеть" и измените "Уровень безопасности" на низкий.

  • Теперь выберите опцию "Надежные сайты" и измените "Уровень безопасности" на низкий.

настройки интернета

  • Теперь нажмите кнопку "Применить", может появиться всплывающее предупреждение, нажмите кнопку "ОК" для предупреждения и затем кнопку "ОК" в окне "Свойства обозревателя".

Сохранить настройки

  • После этого перезапустите браузер.
  1. Идти к IE->Tools->Internet Options,
  2. Перейдите на вкладку "Безопасность".
  3. Либо включите / отключите защищенный режим для всех (Интернет, локальная интрасеть, доверенные и запрещенные сайты).

Хотел поделиться реальным кодом, так как мало кто все еще может не понимать, как его реализовать. Это для реализации 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...

Надеюсь это поможет. Дайте мне знать, если потребуется дополнительная информация.

Другие вопросы по тегам