Selenium with Webdriver - 切换到没有名字的子窗口

时间:2015-01-26 17:00:20

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

我正在使用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 function“”

webdriver接受失败......

1 个答案:

答案 0 :(得分:0)

当我确定一次只能打开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());
    ]