我使用扩展方法在新的浏览器选项卡中调用交互:
public static void DoInNewTab(this ChromeDriver driver, Action<ChromeDriver> action)
{
var currentHandle = driver.CurrentWindowHandle;
// DOES NOT WORK:
//driver.FindElement(By.CssSelector("body")).SendKeys(Keys.Control + "t");
driver.ExecuteScript("window.open()"); // HERE
Thread.Sleep(2000);
driver.SwitchTo().Window(driver.WindowHandles.Last());
action.Invoke(driver);
driver.Close(); // HERE
driver.SwitchTo().Window(currentHandle);
}
就像超级按钮一样工作,不同之处在于浏览器窗口一直处于激活状态,并进入前台并获得焦点。调试有点笨拙,因为断点显然会激活IDE窗口,但据我所知,浏览器窗口在标记为HERE
的行上被激活。
如何防止窗口被激活并确保其留在后台?