21

我正在使用 Selenium 和 Firefox。

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

这是我的硒脚本:

  • 点击链接A
  • 暂停 5000
  • 选择窗口标题
  • 点击linkB(注意:linkB在新页面上)

Selenium 无法识别新选项卡。它报告:

[警告] 链接有目标“_blank”,Selenium 不支持!随机化目标为:selenium_blank24003

有没有办法告诉 Selenium 与显示的选项卡进行交互?

4

7 回答 7

4

您是否尝试在 selectWindow 之间添加 windowFocus 并单击 linkB?

编辑: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
于 2009-04-08T21:05:26.047 回答
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);
于 2013-06-17T07:23:32.157 回答
2

它对我有用。

[info] Executing: |storeEval | this.browserbot.findElement('link=Pastanet').href | Link_PastaNet |
[info] Executing: |openWindow | ${Link_PastaNet} | MyWindows | 
于 2010-11-24T13:35:08.133 回答
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")) {
}
}
于 2013-06-24T08:02:25.207 回答
0

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

  1. 找到有问题的链接
  2. 从链接中删除属性“目标”
  3. 将 href 目标复制到变量 (myUrl) 中
  4. 修改链接 href->javascript:window.open(myUrl,'myWindow')
  5. 点击链接
  6. 选择窗口“我的窗口”</li>

获取评估 | this.page().findElement('link=click here').removeAttribute('target')||

商店评估 | this.page().findElement('link=click here').href | 我的网址

获取评估 | this.page().findElement('link=click here').href=”javascript:window.open('${myUrl}','myWindow')” ||

点击 | 链接=点击这里 ||

暂停 | 1000 ||

选择窗口 | 名称=我的窗口 ||

于 2010-04-16T10:29:33.537 回答
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.

}
于 2014-01-29T08:36:33.503 回答
0

lericain59 向我发送了正确的方向,尽管我必须进行一些更改才能使其适用于我的 selenium IDE 版本(我正在运行 1.0.6)。此外,出于我的目的,我不需要验证它是否在单独的窗口中打开,只需要它打开正确的窗口即可。

这是对我有用的脚本。

  • 商店评估 | this.browserbot.findElement('link=click here').href | 我的网址 |
  • 开放| ${我的网址} ||

this.page() 不起作用。它似乎已被 this.browserbot 取代。另外,我只是直接打开了页面-它避免了手动暂停并且步骤更少。

于 2010-04-28T04:06:08.853 回答