2017-09-13 58 views
2

我正在尝试使用Ctrl +单击链接在新选项卡中打开它。在Chrome 58.这是工作的罚款请看以下代码:在Selenium Webdriver中使用Ctrl +单击组合打开新选项卡

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浏览器相同的代码,但得到以下错误:

火狐54:链路越来越在同一个标​​签中打开。 IE 11:没有发生..控制移动到下一行的Safari :例外上action.keyDown-无法识别的命令

帮助地与任何一个浏览器也被理解。

感谢

回答

1

另一种方法是使用JavaScript执行:

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

至于你的问题,我太并没有发现任何有用的,直到我发现了这个解决办法。 我甚至尝试:solution with ctrl + enter

+0

我要测试的超链接的功能,以及。所以,需要实际点击链接才能打开它。 –

+0

为什么不使用'click'? – Edwin

+0

点击正在打开它在同一个标​​签。我想一口气测试整个流程。谢谢 –

2

当你试图点击一个链接,是一个<a>标签内的,而不是xpath可以使用linkText定位。下面是示例代码打开URL 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(); 
+0

它运行良好。 :) –

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); 
相关问题