2017-05-06 122 views
0

当我点击链接文本时,它会打开新的子窗口,然后我想在 子窗口上传递输入。我能够打开新的子窗口,但无法找到子窗口的HTML属性,甚至无法找到子窗口ID在driver.windowHandles,它总是只返回父窗口ID。driver.windowHandles无法给孩子窗口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以及如何我输入传递给孩子window.it对我来说是一个很大的帮助。

回答

0

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

  1. 在你点击打开子窗口,获得父窗口的句柄&保存。
  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()); 
    

让我知道如果这个回答你的问题。