c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1451字,纯文字阅读大概需要3分钟。
内容图文
![c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作](/upload/InfoBanner/zyjiaocheng/773/55b4d3da929043098d74bfa4f7d95d5b.jpg)
我知道这是一个矛盾的话题. “正式”驱动程序不支持选项卡,但是许多地方声明新打开的选项卡将通过窗口句柄可用,我们可以使用句柄在选项卡之间切换.
(代码示例是C#,但我希望问题中的C#没有什么特别之处)
driver.SwitchTo.Window(myHandle);
我正在尝试在新标签中打开一个链接.我有成功,浏览器显示新选项卡,但驱动程序的窗口句柄不包含新打开的选项卡,只包含一个原始窗口句柄.这似乎是合乎逻辑的,选项卡不是一个窗口,但是在许多地方它被描述为它应该工作,并且驱动程序将选项卡视为窗口.我错过了什么?
在新标签页中打开:
// Performing Ctrl + Click on my link:
new Actions(driver)
.KeyDown(Keys.Control)
.Click(myLink)
.KeyUp(Keys.Control).Perform();
// driver.WindowHandles did **not** change, still contains one handle
// The newly opened tab can not be reached, because we can not even switch
// the driver to it.
在新窗口中打开:
// Performing context menu and "Open new Window" on my link
new Actions(driver)
.ContextClick(myLink)
.SendKeys("w")
.Perform();
// driver.WindowHandles **changed**, contains 2 handles
// Switch to the newly opened window works:
driver.SwitchTo().Window(driver.WindowHandles.Last());
其他信息:
>使用Firefox v43.0.4
>使用官方Selenium C#绑定v2.48.2(nuget)
> OS Windows 7 64位
>标签描述为工作的zillon地方之一:here(也见所有答案和评论)
解决方法:
浏览器之间存在差异,例如在Chrome中,驱动程序会识别两个窗口句柄.在FireFox中,我也只有一个窗口句柄,但焦点在新选项卡上.
要在选项卡之间切换,您可以使用操作
action.KeyDown(Keys.Control).SendKeys("2").Perform(); //to switch to the second tab
内容总结
以上是互联网集市为您收集整理的c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作全部内容,希望文章能够帮你解决c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。