作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我用来学习 Selenium 的书中的代码片段
public class WindowHandlingTest {
WebDriver driver;
@BeforeMethod
public void setup() throws IOException {
System.setProperty("webdriver.chrome.driver",
"./src/test/resources/drivers/chromedriver");
driver = new ChromeDriver();
driver.get("http://guidebook.seleniumacademy.com/Window.html");
}
@Test
public void handleWindow() {
String firstWindow = driver.getWindowHandle();
System.out.println("First Window Handle is: " + firstWindow);
WebElement link = driver.findElement(By.linkText("Google Search"));
link.click();
String secondWindow = driver.getWindowHandle();
System.out.println("Second Window Handle is: " + secondWindow);
System.out.println("Number of Window Handles so for: "
+ driver.getWindowHandles().size());
这段代码的问题是,当打开一个新选项卡时,selenium仍然认为第一个选项卡已打开,这使得结果绝对错误。仅当我创建所有窗口的 ArrayList 并按索引引用特定选项卡/窗口时,代码才会按预期工作。是否还有其他“正确”的方法来管理浏览器选项卡/窗口?书上的代码是不是错了?
最佳答案
getWindowHandle()
(单数)将获取当前焦点窗口的句柄。
getWindowHandles()
("s") 将获取所有当前打开的窗口/选项卡的句柄,按照打开的顺序排列。
Only when I create ArrayList of all windows and refer to specific tab/window by index, the code works as intended.
因此,它认为这是正确的做法。
关于java - 如何在 Selenium 中有效管理浏览器选项卡\窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57886866/
我是一名优秀的程序员,十分优秀!