Selenium webdriver driver.windowHandles无法提供子窗口id

Selenium webdriver driver.windowHandles无法提供子窗口id,selenium-webdriver,Selenium Webdriver,当我点击链接文本时,它将打开新的子窗口,然后我希望传递输入 子窗口。我可以打开新的子窗口,但找不到子窗口html属性,甚至在驱动程序中找不到子窗口id。windowHandles,它总是只返回父窗口id 我尝试了driver.WindowHandles.Last() 我试过下面的代码 System.Collections.ObjectModel.ReadOnlyCollection<string> window = driver.WindowHandles; foreach (str

当我点击链接文本时,它将打开新的子窗口,然后我希望传递输入 子窗口。我可以打开新的子窗口,但找不到子窗口html属性,甚至在驱动程序中找不到子窗口id。windowHandles,它总是只返回父窗口id

我尝试了driver.WindowHandles.Last()

我试过下面的代码

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);
}
}
System.Collections.ObjectModel.ReadOnlyCollection window=driver.WindowHandles;
foreach(窗口中的字符串strwindow)
{
如果(!title.Equals(driver.title))
{
driver.SwitchTo()窗口(strwindow);
}
其他的
{
driver.SwitchTo()窗口(主窗口);
}
}

请任何人建议我获取childwindow id以及如何将我的输入传递到childwindow。这对我有很大帮助。

关于您的问题的解决方案,请讲几句:

  • 在单击打开子窗口之前,获取父窗口句柄并保存它
  • 切换到子窗口
  • 诱导一些等待子窗口元素渲染的操作
  • 在子窗口上执行其他任务
  • 关闭子窗口
  • 通过保存的父窗口句柄切换回父窗口
  • 以下是原型代码供您参考:

    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());
    
    String parent_window=driver.getWindowHandle();
    System.out.println(“切换标题前为:“+driver.getTitle()”);
    findElement(By.xpath(“to_open_child_window”))。单击();
    Set s1=driver.getWindowHandles();
    迭代器i1=s1.Iterator();
    while(i1.hasNext())
    {
    字符串child_window=i1.next();
    if(!父窗口.equalsIgnoreCase(子窗口))
    {
    driver.switchTo()窗口(子窗口);
    //在这里诱导一些等待元素渲染
    System.out.println(“切换标题后为:“+driver.getTitle()”);
    //执行其他任务
    driver.close();
    }
    }
    driver.switchTo()窗口(父窗口);
    System.out.println(“返回父窗口:+driver.getTitle());
    
  • 如果这回答了你的问题,请告诉我

    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());