在mac中,新选项卡功能无效

时间:2016-12-23 09:44:06

标签: java selenium serenity-bdd

当我点击复制链接时,表示复制了网址,然后打开新标签,并使用selenium webdriver将复制的网址粘贴到新标签中。 下面的代码适用于windows而不是mac。 当我在mac系统中使用这个代码时,任务栏中都会出现一些java软件图标。附上截图供您参考。Java software icon in right corner and application screenshot Error in console

我的代码:

 String element=Util.OR_VF_MY_ACCOUNT_PAGE.getProperty("myAccountPageCopyUrlLinkInWishList");
            $(element).click();

    winHandleBefore= getDriver().getWindowHandle();
            Set<String> handles =  getDriver().getWindowHandles();
            //getDriver().findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_T);
            robot.keyRelease(KeyEvent.VK_T);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            for(String windowHandle  : handles)
            {
                if(!windowHandle.equals(winHandleBefore))
                {
                    getDriver().switchTo().window(windowHandle);
                }
            }
            Util.pause(4);
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_V);
            robot.keyRelease(KeyEvent.VK_V);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            Util.pause(4);
            robot.keyPress(KeyEvent.VK_ENTER);
            robot.keyRelease(KeyEvent.VK_ENTER);
            Util.pause(4);

1 个答案:

答案 0 :(得分:0)

我认为这是因为在Mac / Unix OS上没有“Control”键。尝试在Mac / unix系统上使用“Command”键。

以下是关于如何检查哪个系统正在运行的post,以便您可以自动从“Ctrl”更改为“命令”

修改

使用javascript,您可以根据浏览器实施打开新的标签/窗口。我不知道是否可以通过同一个WebDriver实例访问一个新窗口(我无法在其中测试它)。 但基本上这个snippit应该适用于大多数驱动程序。

// driver is your WebDriver instance
if (driver instanceof JavascriptExecutor) {
    ((JavascriptExecutor)driver).executeScript(
    "var win = window.open('http://www.example.com/', '_blank');" +
    "if (win) {" +
    "    //Browser has allowed it to be opened" +
    "    win.focus();" +
    "} else {" +
    "    //Browser has blocked it" +
    "    alert('new tab/window couldn't be opened');" +
    "}");
} else {
    throw new IllegalStateException("This driver does not support JavaScript!");
}