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

时间:2009-04-08 21:01:17

标签: selenium

我正在使用Selenium和Firefox。

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

这是我的硒脚本:

  • 点击linkA
  • pause 5000
  • selectWindow Title
  • 点击linkB(注意:linkB在新页面上)

Selenium无法识别新标签。它报道:

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

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

7 个答案:

答案 0 :(得分:4)

您是否尝试在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

答案 1 :(得分: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);

答案 2 :(得分:2)

它对我有用。

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

答案 3 :(得分:0)

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

  1. 找到有问题的链接
  2. 从链接中删除属性“target”
  3. 将href目标复制到变量(myUrl)
  4. 修改链接href-&gt; javascript:window.open(myUrl,'myWindow')
  5. 点击链接
  6. 选择窗口'myWindow'
  7. 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('$ {myUrl}','myWindow')”||

    点击| link =点击这里||

    暂停| 1000 ||

    selectWindow | name = myWindow ||

答案 4 :(得分:0)

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

这是适用于我的脚本。

  • storeEval | this.browserbot.findElement('link = click here')。href | myUrl |
  • 打开| $ {myUrl} ||

this.page()无效。它似乎已被this.browserbot取代。此外,我只是直接打开页面 - 它避免了手动暂停并且步骤较少。

答案 5 :(得分:0)

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")) {
}
}

答案 6 :(得分:0)

只需使用此代码。

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.

}