我正在尝试使用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命令
的异常也欢迎与任何一个浏览器相关的帮助。
由于
答案 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);