Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Selenium中有效管理浏览器选项卡\窗口?_Java_Selenium_Selenium Webdriver_Selenium Ide - Fatal编程技术网

Java 如何在Selenium中有效管理浏览器选项卡\窗口?

Java 如何在Selenium中有效管理浏览器选项卡\窗口?,java,selenium,selenium-webdriver,selenium-ide,Java,Selenium,Selenium Webdriver,Selenium Ide,这是我用来学习Selenium的书中的一个代码片段 public class WindowHandlingTest { WebDriver driver; @BeforeMethod public void setup() throws IOException { System.setProperty("webdriver.chrome.driver", "./src/test/resources/drivers/chromedriver"); dr

这是我用来学习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”)将按打开顺序获取当前打开的所有窗口/选项卡的句柄

只有在创建所有窗口的ArrayList并按索引引用特定的选项卡/窗口时,代码才能按预期工作

因此,它认为这是正确的方法。

链接之后。单击()首先需要切换,然后才能处理新选项卡

link.click();

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));

String secondWindow = driver.getWindowHandle();
System.out.println("Second Window Handle is: " + secondWindow);
System.out.println("Number of Window Handles so for: "
                + driver.getWindowHandles().size());
link.click();
ArrayList tabs=新的ArrayList(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
字符串secondWindow=driver.getWindowHandle();
System.out.println(“第二个窗口句柄为:“+secondWindow”);
System.out.println(“因此的窗口句柄数:”
+driver.getWindowHandles().size());
相关信息。