Вкладка переключателя веб-драйвера Selenium - PullRequest
0 голосов
/ 06 июля 2018

Я не могу открыть Google в новой вкладке, просмотрите этот код:

public static void main (String [] args) throws InterruptedException, AWTException
 {

 System.setProperty("webdriver.chrome.driver","C://Users//vbisht//Downloads//chromedriver.exe");
 WebDriver driver = new ChromeDriver();  
 driver.navigate().to("https://www.google.co.in/");
 Robot r = new Robot();
 r.keyPress(KeyEvent.VK_CONTROL);
 r.keyPress(KeyEvent.VK_T);
 //Thread.sleep(10000);
 //driver.navigate().refresh();*/
 ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
 driver.switchTo().window(tabs.get(1)); //switches to new tab
 driver.navigate().to("https://www.google.co.in/");

Ответы [ 4 ]

0 голосов
/ 07 июля 2018

Чтобы открыть два разных URL в двух разных вкладках , после открытия новой вкладки / окна вы должны вызвать WebDriverWait и затем собрать оконные дескрипторы и, наконец, итерация по оконным дескрипторам , а затем switchTo().window(newly_opened), как показано в следующем примере:

  • Пример кода:

    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe.exe");
    WebDriver driver =  new InternetExplorerDriver();
    driver.get("http://www.google.com");
    String first_tab = driver.getWindowHandle();
    System.out.println("Working on Google");
    ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');");
    WebDriverWait wait = new WebDriverWait(driver,5);
    wait.until(ExpectedConditions.numberOfWindowsToBe(2));
    Set<String> s1 = driver.getWindowHandles();
    Iterator<String> i1 = s1.iterator();
    while(i1.hasNext())
    {
        String next_tab = i1.next();
        if (!first_tab.equalsIgnoreCase(next_tab))
        {
        driver.switchTo().window(next_tab);
    
        System.out.println("Working on Facebook");
        }
    }
    
  • Выход на консоль:

    Working on Google
    Working on Facebook
    
0 голосов
/ 06 июля 2018

Попробуйте следующий код,

Приведенный ниже код откроет ссылку в новой вкладке.

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); 
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);

Приведенный ниже код откроет пустую новую вкладку.

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,"t");
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);
0 голосов
/ 06 июля 2018

Вместо использования класса роботов, вы можете просто открыть его с помощью Javascript Executor

public static void main (String [] args) throws InterruptedException, AWTException { System.setProperty("webdriver.chrome.driver","C://Users//vbisht//Downloads//chromedriver.exe"); 
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.google.co.in/");
((JavascriptExecutor) driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1)); //switches to new tab
driver.navigate().to("https://www.google.co.in/");
} 
0 голосов
/ 06 июля 2018
String parentWindowHandler=driver.getWindowHandle();// Store your parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
  subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); // switch to popup window

Надеюсь, это поможет вам.

...