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