长时间潜伏;第一次海报。我对Selenium API和WebDriver相当陌生,并且遇到了一个小问题。
简而言之,我试图通过Selenium的FirefoxDriver利用Firefox选项卡功能,但是在选项卡之间切换时,我的驱动程序实例对象没有使用其getCurrentUrl()方法返回正确的URL。这是我要完成的简短示例:
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
// display starting tab URL
System.out.println(driver.getCurrentUrl()); // expected output: google.com
WebElement body = driver.findElement(By.cssSelector("body"));
// open new tab
if(System.getProperty("os.name").contains("Mac")) {
body.sendKeys(Keys.COMMAND + "t");
}
else {
body.sendKeys(Keys.CONTROL + "t");
}
//navigate in new tab
driver.get("http://www.yahoo.com");
// display new tab URL
System.out.println(driver.getCurrentUrl()); // expected output: yahoo.com
//navigate back to previous tab
body = driver.findElement(By.cssSelector("body"));
body.sendKeys(Keys.CONTROL +""+Keys.SHIFT +""+ Keys.TAB);
// display starting tab URL
System.out.println(driver.getCurrentUrl()); // expected output: google.com
driver.close();
但是,执行后,输出为:
谷歌
雅虎
雅虎
我的直觉表明,驱动程序的框架/选项卡视图更新得不够快,或者根本没有更新,但是我不确定如何确定这一点。任何帮助将不胜感激。
谢谢!
我找到了纠正驱动程序当前视图的解决方案/变通办法。驱动程序切换到其他选项卡后,必须调用switchTo()。defaultContent()。
工作代码如下:
FirefoxDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
// display starting tab URL
System.out.println(driver.getCurrentUrl()); // expected output: google.com
WebElement body = driver.findElement(By.cssSelector("body"));
// open new tab
if(System.getProperty("os.name").contains("Mac")) {
body.sendKeys(Keys.COMMAND + "t");
}
else {
body.sendKeys(Keys.CONTROL + "t");
}
//navigate in new tab
driver.get("http://www.yahoo.com");
// display new tab URL
System.out.println(driver.getCurrentUrl()); // expected output: yahoo.com
//navigate back to previous tab
body = driver.findElement(By.cssSelector("body"));
body.sendKeys(Keys.CONTROL +""+Keys.SHIFT +""+ Keys.TAB);
// refresh driver view
driver.switchTo().defaultContent();
// display starting tab URL
System.out.println(driver.getCurrentUrl()); // expected output: google.com
driver.close();
现在,新的结果输出符合预期:
谷歌
雅虎
谷歌
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句