c# – 在新选项卡中打开的Selenium驱动程序不能像社区共享知识所
发布时间:2020-12-15 22:25:11 所属栏目:百科 来源:网络整理
导读:我知道这是一个矛盾的话题. “正式”驱动程序不支持选项卡,但是许多地方声明新打开的选项卡将通过窗口句柄可用,我们可以使用句柄在选项卡之间切换. ?(代码示例是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 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 解决方法
浏览器之间存在差异,例如在Chrome中,驱动程序会识别两个窗口句柄.在FireFox中,我也只有一个窗口句柄,但焦点在新选项卡上.
要在选项卡之间切换,您可以使用操作 action.KeyDown(Keys.Control).SendKeys("2").Perform(); //to switch to the second tab (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |