2011-03-30 47 views
0

我见过不少文章谈论使用窗口句柄的弹出窗口的工作。 但如何用一个按钮按下时打开浏览器中运行 -WebDriver + swtich到另一个浏览器

我试图让窗口句柄但每次我遇到一个改变字符串的时候,有些东西一样 - “8c5f028e-e7cc-4d0f- afe4-983bb119391e“

甚至没有与新浏览器相关的标题。更多结束我不确定我将如何使用标题将控制权带到新的浏览器。然后在某些时候,我必须将控制权交还给第一个浏览器。

+0

是否有这个问题的任何接受者? – Tarun 2011-03-31 17:31:20

回答

3

最好的办法是做类似如下:

// This code assumes you start with only one browser window in your test. 
// If you have more than one browser window, your code will be more complex. 
string originalHandle = driver.GetWindowHandle(); 
driver.FindElement(By.ClassName("power_buy_now_button")).Click(); 

// May need to wait for window handles collection to have a .Count of 2, 
// as clicks are asynchronous. 
string popupHandle = string.Empty; 
ReadOnlyCollection<string> windowHandles = driver.GetWindowHandles(); 
foreach (string handle in windowHandles) 
{ 
    if (handle != originalHandle) 
    { 
     popupHandle = handle; 
     break; 
    } 
} 

driver.SwitchTo().Window(popupHandle); 
// Do stuff in the popup window, eventually closing it with driver.Close() 
driver.SwitchTo().Window(originalHandle); 
0

我最终选择了第二个手柄,然后点击它。这种方法的工作原理,我希望我也能够控制回主窗口。