1

我的应用程序有一个管理员帐户,并且测试已经在其中。

然后,此帐户具有用于登录的“常规”用户的超链接,例如:

http://dmplanning-stage.herokuapp.com/p/7Fimn1FRs1WZe5xmFTUA
二三 http://dmplanning-stage.herokuapp.com/p/FRs1WZe7Fimn15TUAxmF
_http://dmplanning-stage.herokuapp.com/p/mFTUA7Fimn1FRs1WZe5x

每次我运行测试套件时都会生成这些链接,并且 id 是不同的。

我创建了一个测试来定位并单击列出这些用户及其登录超链接的页面上的超链接。测试运行并且 selenium 使浏览器弹出新窗口,但是我如何切换到它,以便我可以登录并继续?

为了使其更具挑战性,另一个窗口的标题为空,即

我可以让程序员添加标题,但这需要时间。有没有办法识别和切换到另一个窗口?

4

2 回答 2

2

我假设您正在使用 Selenium IDE。所以从硒参考


选择弹出(窗口ID)

简化了选择弹出窗口的过程(并且不提供超出 selectWindow() 已经提供的功能)。

  • 如果未指定 windowID 或指定为“null”,则选择第一个非顶部窗口。顶部窗口是 selectWindow() 在不提供 windowID 的情况下选择的窗口。在播放多个弹出窗口时不应使用此选项。

  • 否则,将根据 windowID 按以下顺序查找窗口: 1) 窗口的“名称”,如 window.open() 所指定;2) 一个 javascript 变量,它是对窗口的引用;3) 窗口的标题。这与 selectWindow 执行的有序查找相同。


选择窗口(窗口 ID)

使用窗口定位器选择弹出窗口;一旦选择了弹出窗口,所有命令都会转到该窗口。要再次选择主窗口,请使用 null 作为目标。窗口定位器提供了指定窗口对象的不同方式:按标题、按内部 JavaScript“名称”或按 JavaScript 变量。

  • title = My Special Window:使用出现在标题栏中的文本查找窗口。当心; 两个窗口可以共享相同的标题。如果发生这种情况,这个定位器只会选择一个。

  • name = myWindow:使用其内部 JavaScript“名称”属性查找窗口。这是传递给 JavaScript 方法 window.open(url, windowName, windowFeatures, replaceFlag) (Selenium 拦截)的第二个参数“windowName”。

  • var = variableName:一些弹出窗口未命名(匿名),但与当前应用程序窗口中的 JavaScript 变量名称相关联,例如“window.foo = window.open(url);”。在这些情况下,您可以使用“var=foo”打开窗口。

selectWindow如果您可以检索打开的新窗口的名称,那将是理想的。

如果您在确定要操作的窗口的名称时遇到问题,请查看 Selenium 日志消息,这些消息标识了通过 window.open 创建的窗口的名称(因此被 Selenium 拦截)。在打开每个窗口时,您将看到如下消息:

debug: window.open call intercepted; window ID (which you can use with selectWindow()) is "myNewWindow"

在某些情况下,Selenium 将无法拦截对 window.open 的调用(例如,如果调用发生在“onLoad”事件期间或之前)。(这是错误 SEL-339。)在这些情况下,您可以使用 Selenium openWindow 命令强制 Selenium 注意到打开窗口的名称,使用空(空白)url,如下所示: openWindow("", "myFunnyWindow") .

于 2012-12-07T09:15:39.127 回答
1

您可以使用窗口句柄切换到新窗口。某种东西。。

Webdriver driver = new FirefoxDriver();
driver.get  // Go to ur login page
driver.click //Click on link which launches new window
Set<String> s = driver.getwindowhandles() //this will return all open windows
driver.switchTo.window(s[1]);  //will switch to second window

希望能帮助到你..

于 2012-12-07T05:34:50.780 回答