【发布时间】:2015-10-16 10:45:15
【问题描述】:
我正在尝试在新选项卡中打开一个链接,然后在 Firefox 浏览器中使用 Java 中的 selenium 切换到该选项卡。据我了解,为了做到这一点,我需要使用发送键组合。
为了在同一个窗口中打开链接,我一直在使用这样的东西:
WebElement we = driver.findElement(By.xpath("//*[@id='btn']"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", we);
以上对我来说工作正常。
现在我也在尝试发送密钥,如下所示,但不起作用:
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("keyDown(Keys.CONTROL)
.keyDown(Keys.SHIFT)
.click(arguments[0])
.keyUp(Keys.CONTROL)
.keyUp(Keys.SHIFT);", we);
有什么建议吗?我无法弄清楚将密钥发送到 JavascriptExecutor 的正确语法。我见过一些使用 Actions 的类似解决方案,但这对我也不起作用。
【问题讨论】:
-
当您使用操作执行 CTRL+SHIFT+单击时,发生了什么?谢谢。
-
@alecxe 实际上,如果我使用
new Actions(driver).keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).click(we).keyUp(Keys.CONTROL).keyUp(Keys.SHIFT).perform();,那么链接会在 current 选项卡中打开。我也不知道如何使它正常工作。 -
为什么要使用Actions或者JavascriptExecutor来执行sendKeys?普通 Selenium WebElement 不起作用?
标签: javascript java firefox selenium sendkeys