C# 获取当前活动选项卡

C# 获取当前活动选项卡,c#,google-chrome,selenium-webdriver,C#,Google Chrome,Selenium Webdriver,我正在使用Selenium和Web驱动程序C。我想查询当前选项卡并对其进行某些分析。如果用户打开新选项卡,则应查询新选项卡 我一直在尝试所有的C API方法来完成这个任务,比如SwitchTo foreach (string s in this.driver.WindowHandles){ this.driver.SwitchTo().Window(s); if (((IJavaScriptExecutor)this.driver).ExecuteScript("return docum

我正在使用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\");");
  }
}

上述代码的问题是,它在多个选项卡之间闪烁,我认为这是正确的,因为我正在选项卡之间切换。

如果您想要最后打开的选项卡,您需要使用最后一个窗口句柄,而不是在循环中迭代所有选项卡

string windowHandle = this.driver.WindowHandles.Last() // using System.Linq
this.driver.SwitchTo().Window(windowHandle);
//...

此代码中没有“切换到”。很抱歉,我已经更新了它。但是它不会进入任何其他选项卡,对吗?我希望能够获取用户当前激活的选项卡的句柄。@BipinGosain For Selenium活动选项卡是在打开新选项卡之前的选项卡。要激活另一个选项卡,请使用SwitchTo。我理解,谢谢,我实际上刚刚开始使用Selenium。我想要的行为很简单,用户可以在chrome实例上的选项卡和selenium上的选项卡之间切换,我正在运行的任何查询都应该在活动选项卡上运行。