driver.windowHandles无法提供子窗口ID

时间:2017-05-06 13:10:49

标签: selenium-webdriver

当我点击链接文本时,它将打开新的子窗口,然后我想要传递输入  儿童的窗户。我能够打开新的子窗口,但无法找到子窗口html属性,甚至无法在 driver.windowHandles 中找到子窗口ID,它始终只返回父窗口ID。

我尝试使用driver.WindowHandles.Last()

string lastwindow = driver.WindowHandles.Last();
driver.SwitchTo().Window(lastwindow);

我尝试使用以下代码

System.Collections.ObjectModel.ReadOnlyCollection<string> window = driver.WindowHandles;
foreach (string strwindow in window)
{
if (!title.Equals(driver.Title))
{
 driver.SwitchTo().Window(strwindow);
}
else
{
driver.SwitchTo().Window(mainwindow);
}
}

请有人建议我获取childwindow id以及如何将我的输入传递给子窗口。对我来说是一个很大的帮助。

1 个答案:

答案 0 :(得分:0)

关于问题解决方案的几句话:

  1. 在您单击打开子窗口之前,获取父窗口句柄&amp;保存它。
  2. 切换到子窗口。
  3. 诱导一些等待子窗口元素呈现。
  4. 在子窗口上执行其他任务。
  5. 关闭子窗口。
  6. 通过保存的父窗口句柄切换回父窗口。
  7. 以下是供您参考的原型代码:

    String parent_window = driver.getWindowHandle();
    System.out.println("Before switching Title is : "+driver.getTitle());
    driver.findElement(By.xpath("to_open_child_window")).click();
    Set<String> s1 = driver.getWindowHandles();
    Iterator<String> i1 = s1.iterator();
    while(i1.hasNext())
    {
        String child_window = i1.next();
        if (!parent_window.equalsIgnoreCase(child_window))
        {
            driver.switchTo().window(child_window);
            //induce some wait here for the elements to render
            System.out.println("After switching title is : "+driver.getTitle());
            //perform your other tasks
            driver.close();
        }
    }
    driver.switchTo().window(parent_window);
    System.out.println("Back to parent Window : "+driver.getTitle());
    
  8. 如果这回答你的问题,请告诉我。