首页 文章

如何将焦点更改为Selenium中的新弹出选项卡?

提问于
浏览
20

我正在使用Selenium和Firefox .

我在页面上有一个链接(比如linkA),它在新标签页中打开一个新页面 . 单击linkA时会显示新选项卡 . 然后我想与新页面进行交互 .

这是我的selenium脚本:

  • 点击链接A.

  • 暂停5000

  • selectWindow Headers

  • 单击linkB(注意:linkB在新页面上)

Selenium无法识别新标签 . 它报告:

[warn] Link的目标是'_blank',Selenium不支持!将目标随机化为:selenium_blank24003

有没有办法告诉Selenium与显示的标签进行交互?

7 回答

  • 0

    您是否尝试在selectWindow和clickB之间添加windowFocus?

    编辑:selectWindow采用Javascript windowID . 您的linkA是否指定了Selenium要访问的windowID?

    这是完整的第一个测试页面(t1.html),在window.open中调用第二个参数是'WindowTest',这是selenium寻找的javascript windowID .

    <a href="javascript:void(0);" name="t1" 
       onclick="window.open('t2.html', 'WindowTest', 'width=450,height=600');">
     test
    </a>
    

    这是第二个测试页面(t2.html):

    <a href="t1.html" name="t2">2test2</a>
    

    运行脚本最终会在t1.html我的脚本上弹出窗口

    click              link=test
    pause              5000
    selectWindow       WindowTest
    windowFocus
    click              link=2test2
    
  • 4

    你好试试这个......

    Set<String> winSet = driver.getWindowHandles();
            List<String> winList = new ArrayList<String>(winSet);
            String newTab = winList.get(winList.size() - 1);
            System.out.println("winList: "+winList.size());
            //driver.close(); // close the original tab
            driver.switchTo().window(newTab);
    
  • 0

    它对我有用 .

    [info] Executing: |storeEval | this.browserbot.findElement('link=Pastanet').href | Link_PastaNet |
    [info] Executing: |openWindow | ${Link_PastaNet} | MyWindows |
    
  • 0

    以下是我为Selenium IDE采取的步骤:

    • 找到有问题的链接

    • 从链接中删除属性“target”

    • 复制变量中的href目标(myUrl)

    • 修改链接href-> javascript:window.open(myUrl,'myWindow')

    • 点击链接

    • 选择窗口'myWindow'

    getEval | this.page() . findElement('link = click here') . removeAttribute('target')||

    storeEval | this.page() . findElement('link = click here') . href | myUrl

    getEval | this.page() . findElement('link = click here') . href =“javascript:window.open('$ ','myWindow')”||

    点击| link =点击这里||

    暂停| 1000 ||

    selectWindow | name = myWindow ||

  • 0

    lericain59给了我正确的方向,虽然我不得不做一些改变,因为它与我的版本的selenium的IDE(我正在运行1.0.6)一起工作 . 此外,为了我的目的,我不需要验证它在一个单独的窗口中打开,只是它打开了正确的窗口 .

    这是适合我的脚本 .

    • storeEval | this.browserbot.findElement('link=click here').href | myUrl |

    • 打开| $ ||

    this.page()没有用 . 它似乎已被this.browserbot取代 . 此外,我只是直接打开页面 - 它避免了手动暂停和较少的步骤 .

  • 2
    Iterator<String> windowIterator = driver.getWindowHandles().iterator();while (windowIterator.hasNext()) {
    String windowHandle = windowIterator.next();
    driverwindow = driver.switchTo().window(windowHandle);
    if (_driverwindow.getTitle().equals("Title of the window to switch")) {
    }
    }
    
  • 4

    只需使用此代码即可 .

    public void newtab(){
    
        System.setProperty("webdriver.chrome.driver", "E:\\eclipse\\chromeDriver.exe");
    
        WebDriver driver = new ChromeDriver();
    
        driver.get("http://www.w3schools.com/tags/att_a_target.asp");
    
        //I have provided a sample link. Make sure that you have provided the correct link in the above line.
    
        driver.findElement(By.className("tryitbtn")).click();
    
        new Actions(driver).sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL).sendKeys(driver.findElement(By.tagName("html")), Keys.NUMPAD2).build().perform();
    
    
        // In keyboard we will press 
    
        //ctrl+1 for 1st tab
    
       //ctrl+2 for 2nd tab
    
       //ctrl+3 for 3rd tab.
    
      //Same action is written in the above code.
    
    }
    

相关问题