Selenium href blank New Window test

时间:2010-11-16 17:47:08

标签: selenium-rc href target

因此,使用Selenium,我想测试页面上的链接,看看它们是否打开了一个新窗口。它们不是javascript链接,只是一个基本的href“target = _blank”。 我想确保新打开的窗口实际上加载了一个页面。 我可以执行所有脚本来获取链接的链接,但是当我测试页面标题时,我得到了我正在测试的页面,而不是顶部的新窗口。 如何定位新窗口并检查是否加载了该页面?

感谢

3 个答案:

答案 0 :(得分:3)

以下是一个带有属性target =“_ blank”的表单,它在新窗口上发送POST请求:

// Open the action in a new empty window
selenium.getEval("this.page().findElement(\"//form[@id='myForm']\").target='my_window'");
selenium.getEval("selenium.browserbot.getCurrentWindow().open('', 'my_window')");

//The contents load in the previously opened window
selenium.click("//form[@id='myForm']//input[@value='Submit']");
Thread.sleep(2000);

//Focus in the new window
selenium.selectWindow("my_window");
selenium.windowFocus();
/* .. Do something - i.e.: assertTrue(.........); */

//Close the window and back to the main one
selenium.close();
selenium.selectWindow(null);
selenium.windowFocus();

html代码类似于:

<form id="myForm" action="/myAction.do" target="_blank">
    <input type="text" name="myText" value="some text"/>
    <input type="submit" value="Save"/>
</form>

答案 1 :(得分:1)

你已经标记了问题RC,所以我认为它不是Selenium IDE。

您可以使用selenium.selectWindow或selenium.selectPopUp或selenium.windowFocus等内容来定位新窗口。

我觉得非常有用的一种技术是使用Selenium IDE捕获脚本,然后选择Options,然后选择所需的编程格式(Java,C#等),然后使用该片段作为RC测试的基础。 / p>

答案 2 :(得分:1)

根据名称随机化,我想我可以遍历窗口名称并选择未知的名称。 这有效,但没有完全测试......

 public function testMyTestCase() {
  $this->open("/");
  $this->click("link=Sign in");
  $this->waitForPageToLoad("30000");
  $this->type("email", "xxx@gmail.com");
  $this->type("password", "xxx");
  $this->click("login");
  $this->waitForPageToLoad("30000");
  $this->click("link=Resources");
  $this->waitForPageToLoad("30000");
    $this->click("link=exact:http://100pages.org/");

    $cc = $this->getAllWindowNames();
    foreach($cc as $v ) {           
        if (strpos($v, "blank")) {                  
            $this->selectWindow($v);
            $this->waitForPageToLoad("30000");          
            $this->assertRegExp("/100/", $this->getTitle());
        }
    }

  }