首页 文章

Selenium IDE:在新选项卡中打开并将焦点切换到新选项卡不起作用

提问于
浏览
8

我在selenium ide中陷入了一个问题

场景是这样的

Login-----

go to dashboard page---------

mouse over any menu on the top navigational bar----

on mouseover sub menu will appear as drop down--

now click any link from the drop down --

after clicking link will open in new tab

现在,从那时起,我们必须将重点转移到新选项卡上,因为其余的测试将在新选项卡上完成 .

我写的代码如下

<tr>
    <td>open</td>
    <td>/magma/dev/</td>
    <td></td>
</tr>
<tr>
    <td>type</td>
    <td>name=user_id</td>
    <td>abcd</td>
</tr>
<tr>
    <td>type</td>
    <td>name=pass</td>
    <td>1234</td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>id=btnLogin</td>
    <td></td>
</tr>
<tr>
    <td>verifyTextPresent</td>
    <td>Costing List</td>
    <td></td>
</tr>
<tr>
    <td>verifyTextPresent</td>
    <td>Fuel</td>
    <td></td>
</tr>
<tr>
    <td>mouseOver</td>
    <td>//div[@id='smoothmenu1']/ul/li[3]</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>link=Fuel Cost</td>
    <td></td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>http://10.0.1.101/magma/dev/fuelcost/</td>
    <td></td>
</tr>
<tr>
    <td>verifyTextPresent</td>
    <td>Manage Fuel Cost</td>
    <td></td>
</tr>
<tr>
    <td>clickAndWait</td>
    <td>link=Logout</td>
    <td></td>
</tr>

此代码正常工作,直到点击下拉列表中的子菜单后,它不起作用,并在日志中显示错误

因此,当我试图运行该测试用例时,它显示错误

[warn] Link has target '_blank', which is not supported in Selenium! Randomizing target to be: selenium_blank84419

任何人都可以帮我正确编写代码

9 回答

  • 0

    以下代码适用于我:

    <tr>
        <td>storeEval</td>
        <td>selenium.getAllWindowNames()[1]</td>
        <td>windowName</td>
    </tr>
    <tr>
        <td>getEval</td>
        <td>this.doEcho("array length: "+selenium.getAllWindowNames().length);this.doEcho("Available window names: "+selenium.getAllWindowNames());this.doEcho("Selecting window: "+storedVars['windowName']);</td>
        <td></td>
    </tr>
    <tr>
        <td>selectWindow</td>
        <td>${windowName}</td>
        <td></td>
    </tr>
    

    我希望它能帮助那些面临类似问题的人

  • 1

    使用 selectPopUp ,但不是 storeEvalselectWindow ,它们都太复杂了 .

    selectPopUp:

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

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

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

    • 否则,将按顺序将windowID视为以下顺序查找窗口:1)窗口的"name",如window.open()所示; 2)一个javascript变量,它是对窗口的引用; 3)窗口的 Headers . 这与selectWindow执行的顺序查找相同 .

    下面的代码(selenium脚本,我从selenium IDE复制)表示以下代码:

    1.点击“编辑”链接

    2.等待2秒钟(等待新窗口打开)

    3.专注于新窗口

    <tr>
        <td>click</td>
        <td>link=edit</td>
        <td></td>
    </tr>
    <tr>
        <td>pause</td>
        <td>2000</td>
        <td></td>
    </tr>
    <tr>
        <td>selectPopUp</td>
        <td></td>
        <td></td>
    </tr>
    
  • 0
    <tr>
        <td>selectWindow</td>
        <td>http://10.0.1.101/magma/dev/fuelcost/</td>
        <td></td>
    </tr>
    

    <td>http://10.0.1.101/magma/dev/fuelcost/</td> 替换为 window IDwindow titlewindow name

  • 1

    尝试选择selectWindow()只需提供窗口 Headers 名称withing() . 对于Ex:Window Title是Testing,然后命令:selectWindow title:Testing

    要了解新打开的窗口的 Headers ,请按照以下步骤操作:转到新窗口右键单击 - >查看页面源按ctrl F.键入title和serch . 您将获得新窗口的 Headers

  • 1

    我希望这可以帮助那里的人!它对我很有用 . 您仍然会在日志中收到警告,但测试工作正常 .

    Selenium IDE workaround for _blank error

  • 0

    单击新选项卡事件后,请添加waitForPopUp和selectPopUp事件 . 它对我有用 .

  • 10

    我使用以下内容,它适用于我,希望它有所帮助! :)

    storeEval | this.browserbot.findElement('link=link name').href |    myUrl | 
    open | ${myUrl}
    
  • 2
  • 1

    作为替代方案,可以在单击之前从链接中删除目标属性 . 以下是从当前页面上的所有链接中删除所有目标属性的代码:

    <tr>
        <td>runScript</td>
        <td>Array.from(document.links).forEach(function(link){link.removeAttribute('target')})</td>
        <td></td>
    </tr>
    

相关问题