通过Selenium WebDriver在浏览器的同一窗口会话中打开一个新选项卡?

时间:2015-01-27 07:20:13

标签: testing selenium selenium-webdriver automation webdriver

如何通过Selenium WebDriver命令在浏览器的同一窗口会话中打开新选项卡?

5 个答案:

答案 0 :(得分:4)

可以在同一浏览器窗口中打开新选项卡,请参阅Firefox解决方案:

问题是 - 一旦打开标签页,就没有内置的简便方法可以在标签页之间切换。 Selenium只是doesn't provide an API for that

而不是标签,打开一个新的浏览器窗口。

答案 1 :(得分:0)

是的,你可以这样做,请参阅下面的示例代码:

   //OPEN SPECIFIC URL IN BROWSER
    driver.get("http://www.toolsqa.com/automation-practice-form/");

   //MAXIMIZE BROWSER WINDWO
    driver.manage().window().maximize();


   //OPEN LINKED URL IN NEW TAB IN SAME BROWSER 
   String link1 = Keys.chord(Keys.CONTROL,Keys.ENTER); 
   driver.findElement(By.linkText("Partial Link Test")).sendKeys(link1);

上面的代码将在新标签中打开link1。你可以运行上面的代码来看效果。以上是公共链接,包括测试表格。

但正如 @alecxe 所说,没有办法在标签之间切换。所以你打开新的浏览器窗口会更好。

答案 2 :(得分:0)

我很害怕,但有一种方法可以切换标签。 我们已成功解决了这个问题。

请找到以下链接。

switch tabs using Selenium WebDriver with Java

答案 3 :(得分:0)

Selenium 可以在标签之间切换。

的Python:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
element = driver.find_element_by_css_selector("html") # Gets the full page element, any element works for this
key_code = Keys.CONTROL # Use Keys.COMMAND for Mac
driver.execute_script("window.open();") # Executes Javascript to open a new tab
driver.switch_to.window(1) # Switches to the new tab (at index 1, first tab is index 0)
driver.switch_to.window(0) # Switches to the first tab

答案 4 :(得分:0)

使用java脚本,我们可以在同一窗口中轻松打开新标签。

public String openNewTab(){
       String parentHandle = driverObj.getWindowHandle();
        ((JavascriptExecutor)driverObj).executeScript("window.open()");
        String currentHandle ="";
                // below driver is your webdriver object
        Set<String> win  = driver.getWindowHandles();   

        Iterator<String> it =  win.iterator();
        if(win.size() > 1){
            while(it.hasNext()){
                String handle = it.next();
                if (!handle.equalsIgnoreCase(parentHandle)){
                    driver.switchTo().window(handle);
                    currentHandle = handle;
                }
            }
        }
        else{
            System.out.println("Unable to switch");
        }
        return currentHandle;
    }