2017-05-06 121 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()); 
    

讓我知道如果這個回答你的問題。