Как открыть новую вкладку в браузере Chrome с помощью Selenium - PullRequest
0 голосов
/ 04 мая 2018

Я пробовал следующие решения, но они не работали, я использую Selenium 3.9.1 и Chrome v66.0.3, есть ли у нас другие альтернативные решения:

Solution 1:
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "/t");
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1));
    driver.get("http://google.com");
Solution 2:
    Actions act = new Actions(driver);
    act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform();

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Почему бы не использовать JavaScriptExecutor, чтобы открыть новое окно и переключиться на него?

Теперь точно по поводу синтаксиса Java, но в Protractor это может быть что-то вроде этого

browser.executeScript('window.open()').then(function () {
        browser.getAllWindowHandles().then(function (handles) {
            var secondWindow = handles[1];
            browser.ignoreSynchronization = true;
            browser.switchTo().window(secondWindow).then(function () {
                browser.get('https://google.com');
});
});
});
0 голосов
/ 04 мая 2018

Единственный способ открывать ссылки в новых вкладках - имитировать сочетания клавиш. Следующее верно в FFX, Chrome и IE

  1. Ctrl + t откроет новую пустую вкладку и переключит фокус на нее.
  2. Удерживая Ctrl, затем щелкнув ссылку, вы откроете ссылку в новой вкладке, но оставите фокус на существующей вкладке.
  3. Удерживая Ctrl AND Shift, затем нажав, откроется ссылка в новой вкладке И переместится фокус на новую вкладку.
  4. Ctrl + w закроет текущую вкладку и переключит фокус на последнюю открытую вкладку (хотя учтите, что Ctrl + W, т.е. Ctrl + Shift + w закроет ВСЕ вкладки!)

Selenium (в настоящее время) не имеет никакой концепции вкладок в окне браузера, поэтому для того, чтобы открыть вкладку и затем протестировать ее, вы ДОЛЖНЫ использовать опцию 3.

Попробуйте что-то вроде этого:

 WebDriver driver = new ChromeDriver();
    driver.get("http://yahoo.com");  
    ((JavascriptExecutor)driver).executeScript("window.open()");
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1));
    driver.get("http://google.com");

P.S Посмотрите здесь на эту ошибку -> https://github.com/SeleniumHQ/selenium/issues/5462

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...