Selenium WebDriver: откройте новую вкладку вместо нового окна

Я использую Selenium WebDriver. Каждая ссылка открывается в новом окне браузера. Мне это не удобно. Как я могу изменить его так, чтобы он открывался только на новой вкладке?

2 ответов


Selenium не имеет возможности переключать вкладки в данный момент. Из-за этого мы заставляем браузер открывать ссылки в новых окнах, но поскольку мы можем переключать окна, мы заставляем браузер использовать подход. Это мая исправлена в более поздней версии


Selenium имеет возможность переключать вкладки в настоящее время-a-days. Ниже code1: будет работать для firefox, code2: для IE и chrome с помощью класса Robot мы можем сделать, и элемент управления не перемещается автоматически на текущую вкладку, поэтому нам нужно переключиться на текущую вкладку с помощью метода оконных ручек. Приведенный ниже код будет хорошо работать, когда мы запускаем индивидуальный скрипт, но при запуске как набор Вы можете почувствовать боль при выполнении ключевых событий платы. Чтобы избежать этого, мы должны пойти с другими. возможность использования пользовательского метода javascript с помощью JavaScript executor в selenium-Java.

мы можем переключаться между окнами и вкладками, определяя его имя, выделенное для каждого окна, которое мы открываем, и имя будет буквенно-цифровым символом.

    ***Code 1***
    //First tab(default tab)
    driver.navigate().to("http://www.google.com");
    driver.manage().window().maximize();

    //second tab
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
    driver.navigate().to("https://yahoo.com");

    //third tab
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
    driver.navigate().to("http://www.google.com");

    //move to very first tab.
    driver.findElement(By.cssSelector("body"))
            .sendKeys(Keys.CONTROL + "\t");

    // To close the current tab.    
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w");
    **code 2**
    driver.navigate().to("http://www.google.com");
    driver.manage().window().maximize();


    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_T);

    Set<String> handles = driver.getWindowHandles();
    List<String> handlesList = new ArrayList<String>(handles);
    String newTab = handlesList.get(handlesList.size() - 1);

    // switch to new tab
    driver.switchTo().window(newTab); 
    driver.get("http://www.yahoo.com");