0

我正在通过表单向第三方 URL 提交搜索条件。我试图给 target="someName"。但是,当我尝试使用“sameName”关注新窗口并在那里验证一些文本时,selenium 无法找到该定位器或关注该窗口。重调假。请帮忙。这很紧急。我还尝试了 storeAllWindowNames 或 Ids selenium 命令,也无法使用其返回的主窗口 ID 而不是新的打开窗口。

4

2 回答 2

0

想法如下。当您尝试在新窗口中验证某些文本时,我认为没有必要获取窗口名称,因为您可以使用 firepath(ffox 中的 firebug 插件)和使用命令获取要验证的文本的 xpath 或 cssselector

    String txt = driver.findElement(By.xpath(//...blablbalba)).getText().trim();
    //or
   String txt = driver.findElement(cssSelecot(html>..blalblabla...)).getText().trim();
    //validation 
   Assert.assertTrue(txt.equals("blablabla"));

你实际上可以验证它。

或者如果您想验证某些东西而 selenium 无法处理它,那么我建议您使用 js(使用 js 的 getText):

 String cssSelector=....

    JavascriptExecutor js = (JavascriptExecutor) driver;
            StringBuilder stringBuilder = new StringBuilder();

    stringBuilder.append("var x = $(\""+cssSelector+"\");");
            stringBuilder.append("return x.text().toString();")       ;


           String res= (String) js.executeScript(stringBuilder.toString());
           Assert.assertTrue(res.trim().contains("blablabla....")   );

希望这对你有用。

于 2012-09-16T10:28:51.117 回答
0

这是解决方案:

好吧,如果你别无选择,只能使用它。这是一种解决方案:如果您有一个自己的目标,例如target="popup",那么您只需要在单击链接之前打开目标窗口。例子:

[b]store "javascript{selenium.browserbot.getCurrentWindow().open('', 'popup')}", "myWindow"[/b]

如果您有target="_blank",则需要在打开窗口之前更改目标。

store "javascript{this.page().findElement('link=My link who open the popup with target blank').target='popup'}", "myVar" 
store "javascript{selenium.browserbot.getCurrentWindow().open('', 'popup')}", "myWindow"

然后,您单击链接和selectWindow("popup")。那是。

另一种解决方案是重写整个 A 标记并href/target通过 javascript更改,window.open但这需要做更多的工作。

于 2012-09-18T09:58:04.017 回答