Selenium с Webdriver - переключиться на дочернее окно без имени

Я провожу приемочное тестирование с помощью webdriver и codeception. Я немного новичок в этом, поэтому, пожалуйста, потерпите меня. Я пытаюсь переключиться на дочернее окно, которое создается после нажатия кнопки:

<input class="submit_btn" type="button" onclick="openHAWin(this.form.purchase_clinic.value)" value="add" name="add_ha">

Поскольку имя этой страницы не встроено ни в код, ни на саму целевую страницу, я попытался использовать следующий рекомендуемый код для переключения на дочернюю страницу:

$I->executeInSelenium(function (\Webdriver\Session $webdriver) {
$handles=$webdriver->window_handles();
$last_window = end($handles);
$webdriver->focusWindow($last_window);});

Однако приведенный выше код выдает ошибку на шаге, который его использует:

"Я выполняю в селене "лямбда-функцию""

Не удается принять веб-драйвер...


person Bonedaddy    schedule 26.01.2015    source источник


Ответы (1)


У меня есть метод, который я использую, когда я уверен, что одновременно могут быть открыты только 2 окна/вкладки (родительская и новая), но он находится в java, поэтому вам нужно перенести его в свою среду. Этот код основан на моих исследованиях этого портала + мои дополнения. В основном то, что делается ниже: получить все доступные окна и переключиться на то, которое не является родительским.

    String parent = driver.getWindowHandle();

    Thread.sleep(1000);
    Set<String> availableWindows = driver.getWindowHandles();
    String newWindow = null;
    for (String window : availableWindows) {
        if (!parent.equals(window)) {
            newWindow = window;
        }
    }
    if (newWindow != null) {
        WebDriver op = driver.switchTo().window(newWindow);
        //("Driver switched to new window: " + op.getTitle() + " | " + op.getCurrentUrl());
    ]
person Adam S.    schedule 26.01.2015