簡體   English   中英

如何打開多個選項卡並通過Selenium和Webdriver在之間切換?

[英]How to open multiple tabs and switch between through Selenium and Webdriver?

我用谷歌搜索了此代碼,但沒有得到正確的代碼。 我有一個場景,我們的應用程序有5個模塊,我想在每個選項卡上打開它,因為我需要多次在它們之間切換plz help

這不起作用:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

使用getWindowHandles,您可以多次切換URL。在這里,我首先切換URL並標識選項卡,每個選項卡都應該是唯一的URL,我們可以通過URL進行標識。

   for (String window : driver.getWindowHandles()) {
    driver.switchTo().window(window);
    if (driver.getCurrentUrl().contains("google.com")) {    
     //Your operation     
    }       
    if (driver.getCurrentUrl().contains("yahoo.com")) {
    }
    //Your operation
    }

例如,您在兩個標簽頁中打開google和yahoo,然后可以切換標簽頁並確定標簽頁並在其中進行任何操作。

希望對您有幫助

這是打開多個選項卡並通過Selenium Webdriver在它們之間切換的示例示例:

  • 代碼塊:

     import java.util.Set; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class WINDOW_HANDLE_ITERATE_Firefox { public static void main(String[] args) throws Exception { System.setProperty("webdriver.gecko.driver", "C:\\\\Utility\\\\BrowserDrivers\\\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.google.com"); String parent_window = driver.getWindowHandle(); System.out.println("Parent Window Handle is: "+driver.getWindowHandle()); System.out.println("Page Title is: "+driver.getTitle()); ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');"); new WebDriverWait(driver,10).until(ExpectedConditions.numberOfWindowsToBe(2)); Set<String> allWindows_1 = driver.getWindowHandles(); System.out.println("Total Windows: "+allWindows_1.size()); for(String hand1:allWindows_1) if(!parent_window.equals(hand1)) { driver.switchTo().window(hand1); new WebDriverWait(driver,10).until(ExpectedConditions.titleContains("Facebook")); String first_child_window = driver.getWindowHandle(); System.out.println("First Child Window Handle is: "+first_child_window); System.out.println("First Child Window Page Title is: "+driver.getTitle()); driver.close(); } driver.switchTo().window(parent_window); System.out.println("Current Window Handle is : "+driver.getWindowHandle()+ " which is same as "+parent_window +", which is the parent window handle" ); driver.quit(); } } 
  • 控制台輸出:

     INFO: Detected dialect: W3C Parent Window Handle is: 6442450945 Page Title is: Google Total Windows: 2 First Child Window Handle is: 6442450949 First Child Window Page Title is: Facebook – log in or sign up Current Window Handle is : 6442450945 which is same as 6442450945, which is the parent window handle 

你可以試試看

要使用JavascriptExecutor打開新標簽頁,

((JavascriptExecutor) driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));

將根據索引控制標簽:

driver.switchTo().window(tabs.get(1));

主選項卡上的驅動程序控制:

driver.switchTo().window(tabs.get(0));

暫無
暫無

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

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