在Selenium Webdriver中使用Ctrl +单击组合打开新选项卡

时间:2017-09-13 15:09:29

标签: java selenium selenium-webdriver

我正在尝试使用ctrl +单击链接在新选项卡中打开它。这在Chrome 58中运行良好。请找到以下代码:

action.keyDown(Keys.CONTROL).click(driver.findElement(By.xpath
("//section[@class='filmStrip__basic']//a[text()='En savoir 
plus']"))).keyUp(Keys.CONTROL).build().perform(); 

我在IE,Firefox和Safari上使用相同的代码,但收到以下错误:

Firefox 54:链接在同一个标​​签页中打开。 IE 11:什么都没发生..控件正在转移到下一行 Safari:action.keyDown-Unrecognized命令

的异常

也欢迎与任何一个浏览器相关的帮助。

由于

3 个答案:

答案 0 :(得分:3)

当您尝试点击<a>标记内的链接时,您可以使用xpath定位符代替linkText。以下是示例代码,打开网址http://www.google.com,验证Page Title,使用Actions课程点击Gmail链接在新版本中打开https://accounts.google.com标签

String URL="http://www.google.com";
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver =  new FirefoxDriver();
driver.get(URL);
System.out.println("Page Title is : "+driver.getTitle());
WebElement link = driver.findElement(By.linkText("Gmail"));
Actions newTab = new Actions(driver); 
newTab.keyDown(Keys.CONTROL).click(link).keyUp(Keys.CONTROL).build().perform();

答案 1 :(得分:1)

另一种方法是使用javascript executor:

JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("window.open('','_blank');");

至于你的问题,我也有它,并且在找到这个解决方法之前没有找到任何有用的东西。 我甚至尝试过:solution with ctrl + enter

答案 2 :(得分:1)

试试这个......

// specify chromedriver.exe directory path and replace in "driverPath"

            String driverPath = "C:/Users......";
            WebDriver driver;
            System.setProperty("webdriver.chrome.driver", driverPath + "chromedriver.exe");
            driver = new ChromeDriver();

            System.out.println("lanuching 1st url in tab1");

            driver.navigate().to(
                    "https://amazon.com");

            System.out.println("lanuched 1st url in tab1");
            Thread.sleep(30000);
    ((JavascriptExecutor) driver).executeScript(
                    "window.open('http://ebay.com');");
            Thread.sleep(20000);
            Set<String> allwh = driver.getWindowHandles();
            System.out.println(allwh.size());
            for (String v : allwh) {
                System.out.println(v);
                driver.switchTo().window(v);
                String title = driver.getTitle();
                System.out.println("2nd url in tab2" + title);