Selenium IDE:Opening in new tab and shift focus to

2019-01-24 10:46发布

问题:

i have stuck in one point in selenium ide

the scenario is like this

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

now from that point on-wards we have to shift our focus to that new tab because rest of the testing will be done on that new tab.

The code i have written is given below

     <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>

This code is working correctly upto clicking the sub menu from the dropdown after that it is not working and a error is showing in the log

so when ever i am trying to run that test case it is showing error

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

can any one please help me to write the code properly

回答1:

The following code works for me:

<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>

I hope it will help others who face a similar type of problem



回答2:

use selectPopUp, but not storeEval and selectWindow, both of them are too complicated.

selectPopUp:

  • Arguments: windowID - an identifier for the popup window, which can take on a number of different meanings

  • Simplifies the process of selecting a popup window (and does not offer functionality beyond what selectWindow() already provides).

    • If windowID is either not specified, or specified as "null", the first non-top window is selected. The top window is the one that would be selected by selectWindow() without providing a windowID . This should not be used when more than one popup window is in play.
    • Otherwise, the window will be looked up considering windowID as the following in order: 1) the "name" of the window, as specified to window.open(); 2) a javascript variable which is a reference to a window; and 3) the title of the window. This is the same ordered lookup performed by selectWindow .

The code below ( selenium script, I copied from the selenium IDE ) indicates the action of:

1.click a 'edit' link

2.wait for 2 seconds ( waiting for the new window opened)

3.focus on the new window

<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>


回答3:

<tr>
    <td>selectWindow</td>
    <td>http://10.0.1.101/magma/dev/fuelcost/</td>
    <td></td>
</tr>

Replace <td>http://10.0.1.101/magma/dev/fuelcost/</td> with window ID or window title or window name



回答4:

Try with option selectWindow() Just provide the window title name withing (). For Ex: Window Title is Testing, then command : selectWindow title : Testing

To know the title of the newly opened window follow the steps: Go to the new window Right click->view page source Press ctrl+F. Type title and serch. You will get the title of the new window



回答5:

I hope this helps someone out there! It worked well for me. You do still get the warning in the log, but the test works.



回答6:

Please add waitForPopUp and selectPopUp event after clicking the new tab event. It's worked for me.



回答7:

I am using the following and it works for me, hope it helps! :)

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


回答8:

I use storeAttribute incombination with open.

Link: http://www.seleniumwiki.com/software-testing/how-to-solve-the-link-has-target-_blank-which-is-not-supported-in-selenium/

I use it like this:



回答9:

As an alternative, it's possible to remove the target attribute from the link before clicking it. Here's the code to remove all target attributes from all links on the current page:

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