WebDriver + swtich到另一个浏览器

时间:2011-03-30 12:53:05

标签: c# webdriver selenium-webdriver

我看过很多关于使用窗口句柄处理弹出窗口的帖子。 但是如何使用单击按钮时打开的浏览器 -

<button class="power_buy_now_button" type="button"> 
</button>

我试图获得窗口句柄,但每次遇到变化的字符串时,都会出现类似的事情 - “8c5f028e-e7cc-4d0f-afe4-983bb119391e”

新浏览器甚至没有关联的标题。更多我不知道如何使用title来控制新浏览器。然后在某些时候我必须将控制权带回第一个浏览器。

2 个答案:

答案 0 :(得分:4)

您最好的选择是做以下事情:

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

答案 1 :(得分:0)

我最终选择了第二个手柄并点击它。这种方法有效,我希望我也可以控制回主窗口。