c# - 获取当前活动标签
问题描述
我正在使用 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\");");
}
}
上面代码的问题是它在多个选项卡之间闪烁,我认为这是正确的,因为我在选项卡之间切换。
解决方案
如果您想要最后打开的选项卡,则需要使用最后一个窗口句柄,而不是在循环中遍历所有选项卡
string windowHandle = this.driver.WindowHandles.Last() // using System.Linq
this.driver.SwitchTo().Window(windowHandle);
//...
推荐阅读
- html - 如何在多个图像上添加内容?
- vue.js - 动态 v-model 不使用 v-html 指令完成输入
- apache-kafka - 如何使用 kafka-streams-application-reset
- django - 我的 views.py 文件中有一个有效的视图,但仍然给我错误“不是有效的视图函数”
- laravel - Vue:有没有办法检测来自 API 的更改数据
- laravel - 使用“with”加入 laravel 并在连接表中设置 where 语句
- javascript - 有没有办法在休息参数的输出中保留空格?
- swift - 有什么方法可以访问 WKInterfaceButton 上的 pressesbegan 方法
- android - 如果通知消息中有 URL,则在 Android 应用程序中打开来自 FCM 的通知消息作为链接/URL
- regex - 如何在非连续大写字母之前在字符串中添加空格,同时排除连续大写字母?