【问题标题】:How to foucs a new window (third party without windowName) in selenium IDE?如何在 selenium IDE 中聚焦新窗口(没有窗口名称的第三方)?
【发布时间】:2012-09-08 18:08:01
【问题描述】:

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

【问题讨论】:

  • 你能创建一个暴露此错误的网页+硒代码的最小示例吗?至少,发布您如何尝试定位并切换到新窗口。

标签: selenium


【解决方案1】:

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

    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(getText using js):

 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....")   );

希望这对你有用。

【讨论】:

  • 感谢您的回复。但是如果我使用 HTML xpath 来匹配任何文本..它返回 false。我正在使用 selenium IDE firefox 插件。
  • 我尝试给目标命名="windowName" 没有成功
  • 我将表单目标属性设置为 'windowName' 并尝试 selectWindow(null) 也 selectWindow(windowName) 都不起作用。请帮忙..
  • 这个怎么样? driver.switchTo().window("search_form")
【解决方案2】:

这是解决方案:

好吧,如果你别无选择,只能使用它。这是一种解决方案: 如果您有自己的目标,例如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,但这需要做更多的工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多