8

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

John
  • 700
  • 3
  • 17
  • 30

9 Answers9

10

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

icc97
  • 11,395
  • 8
  • 76
  • 90
John
  • 700
  • 3
  • 17
  • 30
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>
Siwei
  • 19,858
  • 7
  • 75
  • 95
1
<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

Rohit Ware
  • 1,982
  • 1
  • 13
  • 29
  • Rohit Thank you for your reply. The new tab which is opening , title of that ab is same as the main tab . title is " Magma Aviation" Can you tell me how will i found the window id of that new tab. if you can explain me with a code it will be very helpfull for me . – John Jul 07 '12 at 07:26
  • xpath=(//*[@title='Magma Aviation'])[2] try this one else go with below URL, it will help you http://qtp-help.blogspot.in/2009/07/selenium-handling-windows.html – Rohit Ware Jul 07 '12 at 07:36
  • [warn] Link has target '_blank', which is not supported in Selenium! Randomizing target to be: selenium_blank51261 [info] Executing: |selectWindow | xpath=(//*[@title='Magma Aviation'])[2] | | [error] Window locator not recognized: xpath The above error is showing in the IDE log – John Jul 07 '12 at 07:43
1

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

sathiya
  • 279
  • 1
  • 5
  • 17
1

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.

Selenium IDE workaround for _blank error

Jess
  • 23,901
  • 21
  • 124
  • 145
1

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

Tinh Mac
  • 11
  • 1
0

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

storeEval | this.browserbot.findElement('link=link name').href |    myUrl | 
open | ${myUrl}
Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
Kati Holasz
  • 498
  • 5
  • 8
0

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:

enter image description here

Julian
  • 4,396
  • 5
  • 39
  • 51
0

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>
Lee Kowalkowski
  • 11,591
  • 3
  • 40
  • 46