我已经看到无数关于使用窗口句柄处理弹出窗口的帖子。但是如何使用单击按钮时打开的浏览器 -
<button class="power_buy_now_button" type="button">
</button>
我试图获取窗口句柄,但每次我遇到一个变化的字符串,比如 - “8c5f028e-e7cc-4d0f-afe4-983bb119391e”
甚至没有与新浏览器相关的标题。此外,我不确定如何使用标题来控制新浏览器。然后在某个时候,我必须将控制权带回第一个浏览器。
我已经看到无数关于使用窗口句柄处理弹出窗口的帖子。但是如何使用单击按钮时打开的浏览器 -
<button class="power_buy_now_button" type="button">
</button>
我试图获取窗口句柄,但每次我遇到一个变化的字符串,比如 - “8c5f028e-e7cc-4d0f-afe4-983bb119391e”
甚至没有与新浏览器相关的标题。此外,我不确定如何使用标题来控制新浏览器。然后在某个时候,我必须将控制权带回第一个浏览器。
您最好的选择是执行以下操作:
// 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);
我最终选择了第二个手柄并单击它。这种方法有效,我希望我也能够将控制权返回到主窗口。