【问题标题】:Get current active tab获取当前活动标签
【发布时间】:2019-08-05 08:38:49
【问题描述】:

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

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

【问题讨论】:

  • 这段代码中没有SwitchTo()
  • 对不起,我已经更新了。

标签: c# google-chrome selenium-webdriver


【解决方案1】:

如果你想要最后打开的标签页,你需要使用最后一个窗口句柄,而不是循环遍历所有标签页

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

【讨论】:

  • 但它不会进入任何其他选项卡,对吧?我希望能够获得用户当前处于活动状态的选项卡的句柄。
  • @BipinGosain 对于 Selenium,活动选项卡是您打开新选项卡之前的选项卡。要激活另一个选项卡,请使用 SwitchTo()
  • 我明白了,谢谢,我实际上刚刚开始使用 Selenium。我想要的行为很简单,用户可以在 chrome 实例和 selenium 上的选项卡之间切换我正在运行的任何查询应该在活动选项卡上运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
  • 2019-08-07
相关资源
最近更新 更多