簡體   English   中英

如何使用Selenium Webdriver在同一窗口中打開多個選項卡(超過2個)之間切換

[英]How to switch between multiple tabs(more than 2) open in same window using Selenium Webdriver

我正在學習Selenium-Webdriver,因此在一種情況下進行練習是可行的,但是我陷入了第3步。 方案如下:

  1. 打開Goog​​le主頁並執行一些搜索,例如說“ WebDriver”。
  2. 在同一窗口的新選項卡中打開前兩個鏈接。
  3. 導航到第二個和第三個選項卡並獲取其標題
  4. 關閉標簽頁,然后切換回Google結果標簽頁。

到目前為止,我已經能夠打開Goog​​le主頁,對“ WebDriver”一詞進行搜索並打開前兩個鏈接,但是現在我無法切換到第二個和第三個選項卡並關閉它們。 到目前為止,我的代碼是:

    String originalHandle = driver.getWindowHandle();
    System.out.println("Before switching title is:" +driver.getTitle());
    String selectLinkOpeninNewTab = Keys.chord(Keys.COMMAND,Keys.ENTER);
    WebElement link1 = driver.findElement(By.xpath(".//*[@id='rso']/div[2]/div[1]/div/h3/a"));
    link1.sendKeys(selectLinkOpeninNewTab);
    WebElement link2 = driver.findElement(By.xpath(".//*[@id='rso']/div[2]/div[2]/div/h3/a"));
    link2.sendKeys(selectLinkOpeninNewTab);

    Set<String> s1 = driver.getWindowHandles();
    Iterator<String> i1 = s1.iterator();
    int i = 0;
    while(i1.hasNext())
    {
        i++;
    String childwindow = i1.next();

    if(!originalHandle.equalsIgnoreCase(childwindow))
    {
    driver.switchTo().window(childwindow);
    Thread.sleep(10000);
    System.out.println("After switching title of new Tab "+i+ " title is " +driver.getTitle());
    driver.close();
    }
}

driver.switchTo().window(originalHandle);
System.out.println("Original window tab title is" +driver.getTitle() );

我不確定問題出在哪里以及如何解決。 :(

我搜索了選項卡切換等功能,但一無所獲。 最接近此窗口的是Windows。 (有很多評論說WindowHandles可以用於選項卡切換,但是事實並非如此-我已經嘗試了很多。它只能用於Windows切換,而不能用於選項卡切換)

如果您需要在新窗口中打開-您需要單擊帶有Shift的btn鏈接

代碼就像

Actions.KeyDown(Keys.Shift).Click(ElementToClick).KeyUp(Keys.Shift).Build().Perform();

如果您需要切換窗口

var _windowsList = new List<String>(Instance.WindowHandles);
Instance.SwitchTo().Window(_windowsList[0]);

可能為時已晚,但希望這會有所幫助:

for (String winHandle : driver.getWindowHandles()) { //Gets the new window handle
        System.out.println(winHandle);
        driver.switchTo().window(winHandle);        // switch focus of WebDriver to the next found window handle (that's your newly opened window)              
    }

請嘗試以下代碼:

Set<String> s1 = driver.getWindowHandles();
for(String childwindow : s1) {
   if(!originalHandle.equals(childwindow)) {
       driver.switchTo().window(childwindow);
       System.out.println("Tab title is " + driver.getTitle();
   }
   driver.close();
}
driver.switchTo().window(originalHandle);

希望這可以幫助。

  1. 通過以下代碼獲取所有窗口處理程序。 設置windowHandleSet = driver.getWindowHandles();
  2. 循環進入窗口處理程序集,切換到每個。 driver.switchTo()。window(windowHandleStr);
  3. 運行命令Ctrl + number可以在同一Firefox窗口的不同選項卡之間切換。 WebElement bodyEle = driver.findElement(By.tagName(“ body”));; bodyEle.sendKeys(Keys.CONTROL +“ 1”);

http://www.dev2qa.com/open-multiple-windows-tabs-in-selenium-webdriver/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM