【问题标题】:Selenium with Webdriver - Switch to child window without nameSelenium 与 Webdriver - 切换到没有名称的子窗口
【发布时间】:2015-01-27 05:47:55
【问题描述】:

我正在使用 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);});

但是,上面的代码在使用它的步骤中会抛出错误:

"我在 selenium 中执行"lambda 函数""

webdriver 接受失败...

【问题讨论】:

    标签: php html selenium-webdriver codeception acceptance-testing


    【解决方案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());
        ]
    

    【讨论】: