c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作

c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所描述的那样工作,第1张

概述我知道这是一个矛盾的话题. “正式”驱动程序不支持选项卡,但是许多地方声明新打开的选项卡将通过窗口句柄可用,我们可以使用句柄在选项卡之间切换.  (代码示例是C#,但我希望问题中的C#没有什么特别之处) driver.SwitchTo.Window(myHandle); 我正在尝试在新标签中打开一个链接.我有成功,浏览器显示新选项卡,但驱动程序的窗口句柄不包含新打开的选项卡,只包含一个原始窗口句柄 我知道这是一个矛盾的话题. “正式”驱动程序不支持选项卡,但是许多地方声明新打开的选项卡将通过窗口句柄可用,我们可以使用句柄在选项卡之间切换.
 (代码示例是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 linknew 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驱动程序不能像社区共享知识所描述的那样工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存