2012-07-06 125 views
9

Tôi đang sử dụng Selenium WebDriver. Mọi liên kết đều được mở trong cửa sổ trình duyệt mới. Nó không thuận tiện cho tôi. Làm thế nào tôi có thể thay đổi nó để nó mở ra chỉ trong tab mới?Selenium WebDriver: Mở tab mới thay vì cửa sổ mới

+0

Bạn đang sử dụng ngôn ngữ lập trình nào? –

Trả lời

5

Selen không có khả năng chuyển đổi tab tại thời điểm này. Bởi vì điều này, chúng tôi buộc trình duyệt phải mở các liên kết trong các cửa sổ mới nhưng vì chúng tôi có thể chuyển đổi các cửa sổ, chúng tôi buộc trình duyệt phải tiếp cận. Điều này có thể được sửa trong phiên bản sau

+0

rõ ràng, cảm ơn bạn – khris

10

Selen có khả năng chuyển qua các tab ngay bây giờ-một-ngày. Mã dưới đây1: sẽ hoạt động cho firefox, code2: cho IE và chrome bằng cách sử dụng lớp Robot mà chúng ta có thể thực hiện và điều khiển không tự động chuyển sang tab hiện tại, vì vậy chúng ta cần chuyển sang tab hiện tại bằng cách sử dụng phương pháp xử lý cửa sổ. Mã dưới đây sẽ hoạt động tốt Khi chúng tôi chạy tập lệnh riêng lẻ nhưng khi chạy như một bộ, bạn có thể cảm thấy nỗi đau khi thực hiện các sự kiện bàn phím. Để tránh điều đó chúng ta phải đi với khả năng khác bằng cách sử dụng phương thức javascript do người dùng định nghĩa bằng cách sử dụng trình thực thi javascript trong selenium-Java.

Chúng tôi có thể chuyển đổi giữa các cửa sổ và tab bằng cách xác định tên được phân bổ cho mỗi cửa sổ mà chúng tôi mở và tên sẽ có ký tự chữ và số.

***Code 1*** 
    //First tab(default tab) 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 

    //second tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("https://yahoo.com"); 

    //third tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("http://www.google.com"); 

    //move to very first tab. 
    driver.findElement(By.cssSelector("body")) 
      .sendKeys(Keys.CONTROL + "\t"); 

    // To close the current tab.  
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w"); 
    **code 2** 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 


    Robot robot = new Robot(); 
    robot.keyPress(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_T); 

    Set<String> handles = driver.getWindowHandles(); 
    List<String> handlesList = new ArrayList<String>(handles); 
    String newTab = handlesList.get(handlesList.size() - 1); 

    // switch to new tab 
    driver.switchTo().window(newTab); 
    driver.get("http://www.yahoo.com"); 
Các vấn đề liên quan