Вопрос по selenium, window, selenium-webdriver, tabs, webdriver – Selenium WebDriver: откройте новую вкладку вместо нового окна

11

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

Какой язык программирования вы используете? Ripon Al Wasim

Ваш Ответ

2   ответа
6

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

10

Selenium имеет возможность переключать вкладки в настоящее время. Приведенный ниже код1: будет работать для Firefox, код2: для 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");

Похожие вопросы