gpt4 book ai didi

java - 打开和在选项卡之间切换时如何更新 FirefoxDriver (WebDriver) 对象?

转载 作者:行者123 更新时间:2023-11-30 03:24:42 24 4
gpt4 key购买 nike

长时间潜伏;第一次海报。我对 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();

但是,执行时输出为:

google

yahoo

yahoo

我的直觉表明驱动程序的框架/选项卡 View 更新得不够快,或者根本没有更新,但我不确定如何确定这一点。任何帮助将不胜感激。

谢谢!

最佳答案

我找到了一个解决方案/解决方法来纠正驾驶员的当前 View 。驱动程序切换到不同选项卡后,必须调用 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();

新的结果输出现在符合预期:

google

yahoo

google

关于java - 打开和在选项卡之间切换时如何更新 FirefoxDriver (WebDriver) 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com