我正在尝试使用selenium ide复制动作。该操作是单击打开新窗口的链接。你如何让selenium ide专注于新窗口而不是另一个窗口?它一直没有为我工作。
答案 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
试图找到合适的 “标题”。因为“头衔”不是 必然是独特的,这可能有 出乎意料的行为。
操纵,看看Selenium 记录标识名称的日志消息 通过window.open创建的窗口 (因此被截获 硒)。你会看到像这样的消息 每个窗口都有以下内容 打开:If you're having trouble figuring out the name of a window that you want
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)
参数:
简化选择弹出窗口的过程(并且不提供selectWindow()已经提供的功能)。
答案 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中有一些优势,因为它不支持目标空白。