我正在使用Selenium和Web驱动程序C#。我想查询当前选项卡并对其进行某些分析。如果用户打开新标签页,则应查询新标签页。
我一直在尝试所有C#API方法来执行此任务,例如SwitchTo()
foreach (string s in this.driver.WindowHandles){
this.driver.SwitchTo().Window(s);
if (((IJavaScriptExecutor)this.driver).ExecuteScript("return document.hidden").Equals("false")) {
IJavaScriptExecutor scriptExe = (IJavaScriptExecutor)this.driver;
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until<bool>(Function);//function evaluation certain expression...
scriptExe.ExecuteScript("alert(\"Something\");");
}
}
上面的代码存在问题,因为我在两个标签之间进行切换,我认为这是正确的,在多个标签之间闪烁。
答案 0 :(得分:1)
如果您想要最后打开的选项卡,则需要使用最后一个窗口句柄,而不是循环遍历所有这些
string windowHandle = this.driver.WindowHandles.Last() // using System.Linq
this.driver.SwitchTo().Window(windowHandle);
//...