internet-explorer - 在同一窗口,不同选项卡中打开超链接
问题描述
我使用以下代码选项在同一窗口和不同选项卡中打开超链接,但每次链接都会在不同窗口中打开。
1)
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);
driver.findElement(By.linkText(linkText)).sendKeys(selectLinkOpeninNewTab);
2)
Actions act = new Actions(driver);
act.moveToElement(element).doubleClick(element))).build().perform();
3)
Actions act = new Actions(driver);
act.contextClick(driver.findElement(By.xpath(element)))
.sendKeys(Keys.ARROW_DOWN)
.sendKeys(Keys.ARROW_DOWN)
.sendKeys(Keys.RETURN)
.build()
.perform();
预期链接应该在同一个窗口的不同选项卡中打开,但每次都是在新窗口中打开。
请帮忙。
解决方案
我不推荐这种方法,因为键盘操作绝对不是您想要的,因为它将是违反并行测试最佳实践的主要约束,也就是说您将无法在Selenium Grid中运行您的测试
我建议采用另一种方法来机智:
- 从链接中提取
href
属性 - 通过函数使用Window.open()函数打开一个新选项卡
driver.executeScript()
- 使用driver.switchTo().window()函数切换到新选项卡
示例代码:
WebElement link = driver.findElement(By.linkText(linkText));
String href = link.getAttribute("href");
driver.executeScript("window.open('" + href + "');");
driver.switchTo().window(driver.getWindowHandles().stream().reduce((f, s) -> s).orElse(null));
System.out.println(driver.getTitle()); // at this point you should see the new page title
推荐阅读
- c++ - WINAPI 序列化消息
- css - CSS动画:缩小顶部图像以显示子图像
- javascript - WooCommerce 加/减数量。产品不更新
- git - Git 子树,子模块 - 使用另一个项目中的项目
- arrays - 月级别和年级别的聚合,也在 MongoDB 中找到平均值
- python - Python Beautifulsoup 查找元素
- vercel - 是否有 Vercel 重写规则来摆脱 Facebook 的 fbclid 参数?
- python - 评估自我内部功能
- java - 使用 WSS4J (SOAP) 在 CXF WebServices 中实现身份验证
- javascript - 如何在 Vue.js 组件中使用 Pixi.js?