首页 > 解决方案 > 获取当前活动标签

问题描述

我正在使用 Selenium 和 C#,Web 驱动程序。我想查询当前选项卡并对其进行某些分析。如果用户打开新标签,则应查询新标签。

我一直在尝试所有 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\");");
  }
}

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

标签: c#google-chromeselenium-webdriver

解决方案


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

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

推荐阅读