【问题标题】:Selenium webdriver switchin tabSelenium webdriver 切换选项卡
【发布时间】:2018-12-15 00:32:14
【问题描述】:

我无法在新标签中打开谷歌,请查看此代码:

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/");

【问题讨论】:

标签: selenium tabs webdriver switch-statement


【解决方案1】:
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

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    试试下面的代码,

    下面的代码将在新标签中打开链接。

    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);
    

    【讨论】:

      【解决方案3】:

      您可以简单地使用 Javascript 执行器打开它,而不是使用机器人类

      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/");
      } 
      

      【讨论】:

        【解决方案4】:

        要在两个不同的 TAB 中打开两个不同的 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
          

        【讨论】:

          猜你喜欢
          • 2012-09-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-20
          • 1970-01-01
          • 2014-10-20
          • 2015-06-09
          相关资源
          最近更新 更多