你如何专注于使用selenium ide的新窗户?

时间:2010-10-04 21:21:51

标签: selenium automated-tests selenium-ide

我正在尝试使用selenium ide复制动作。该操作是单击打开新窗口的链接。你如何让selenium ide专注于新窗口而不是另一个窗口?它一直没有为我工作。

4 个答案:

答案 0 :(得分:8)

选择窗口

为此,您需要使用selectWindow | windowName命令。

要从其他窗口返回主窗口,请执行selectWindow | null

Arguments:

    * windowID - the JavaScript window ID of the window to select

Selects a popup window using a window locator; once a popup window
     已选择

,所有命令都会转到   那个窗口。选择主窗口   再次,使用null作为目标。

Window locators provide different ways of specifying the window object:
     

标题,内部JavaScript   “名称”或JavaScript变量。

    * title=My Special Window: Finds the window using the text that
     

出现在标题栏中。小心;   两个窗口可以共享相同的标题。   如果发生这种情况,这个定位器会   只选一个。           * name = myWindow:使用内部JavaScript查找窗口   “名称”财产。这是第二个   参数“windowName”传递给   JavaScript方法window.open(url,   windowName,windowFeatures,   replaceFlag)(其中Selenium   拦截)。           * var = variableName:某些弹出窗口未命名   (匿名),但与a相关联   JavaScript中的变量名称   当前申请窗口,例如   “window.foo = window.open(url);”。在   那些情况下,你可以打开窗户   使用“var = foo”。

If no window locator prefix is provided, we'll try to guess what you
     

意思是这样的:

1.) if windowID is null, (or the string "null") then it is assumed the
     

用户指的是原件   窗口实例化的窗口。)

2.) if the value of the "windowID" parameter is a JavaScript variable
     

当前应用程序中的名称   窗口,然后假设这个   变量包含返回值   从调用JavaScript   window.open()方法。

3.) Otherwise, selenium looks in a hash it maintains that maps string
     

命名为窗口“名称”。

4.) If that fails, we'll try looping over all of the known windows
     

试图找到合适的   “标题”。因为“头衔”不是   必然是独特的,这可能有   出乎意料的行为。

If you're having trouble figuring out the name of a window that you want
     操纵,看看Selenium   记录标识名称的日志消息   通过window.open创建的窗口   (因此被截获   硒)。你会看到像这样的消息   每个窗口都有以下内容   打开:

debug: window.open call intercepted; window ID (which you can
     

与selectWindow()一起使用是   “myNewWindow”

In some cases, Selenium will be unable to intercept a call to
     

window.open(如果在此期间发生呼叫)   或者在“onLoad”事件之前,为   例)。 (这是错误SEL-339。)在   那些情况下,你可以强迫Selenium   通过使用注意打开窗口的名称   使用Selenium openWindow命令   一个空的(空白)网址,像这样:   openWindow(“”,“myFunnyWindow”)。

selectWindow(WINDOWID)

<强> selectPopup

如果是弹出窗口,请执行selectPopUp | windowId,然后返回主窗口执行selectWindow | null

selectPopUp(windowID)参数:

  • windowID - 弹出窗口的标识符,可以采用多种不同的含义

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

  • 如果未指定windowID或指定为“null”,则选择第一个非顶部窗口。顶部窗口是selectWindow()选择的窗口,不提供windowID。当多个弹出窗口正在播放时,不应使用此功能。
  • 否则,将按顺序将windowID视为以下内容查找窗口:
    1. 窗口的“名称”,如window.open()
    2. 所指定
    3. 一个JavaScript变量,它是对窗口的引用
    4. 窗口的标题。这与selectWindow
    5. 执行的顺序查找相同

答案 1 :(得分:3)

使用Selenium Web Driver 2:

尝试此操作
driver.switch_to.window(driver.window_handles.last);

答案 2 :(得分:2)

您可以使用“ storeAttribute ”命令存储随机窗口ID(由Selenium IDE生成)。您只需将ID存储在变量中,然后可以使用“ selectWindow ”命令选择窗口。

尝试使用:

<tr>
   <td>storeAttribute</td>
   <td>link=Help Center@target</td>
   <td>window_ID</td>
</tr>

<tr>
   <td>selectWindow</td>
   <td>${window_ID}</td>
   <td></td>
</tr> 

答案 3 :(得分:2)

请考虑一下:您是否愿意删除target="_blank"属性?对我来说这是一个解决方案:

getEval
this.page().findElement('link=Facebook').removeAttribute('target'); 

保持在同一个窗口中在Selenium IDE中有一些优势,因为它不支持目标空白。