How do you focus on new windows with selenium ide?

前端 未结 4 804
终归单人心
终归单人心 2021-02-02 17:14

I am trying to use selenium ide to duplicate an action. The action is clicking on a link that open a new window. How do you make selenium ide focus on the new window instead of

相关标签:
4条回答
  • 2021-02-02 17:45

    Consider this: would you prefer to just remove the target="_blank" attribute? For me this has been a solution:

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

    Staying within the same window has some advantages in Selenium IDE, seeing it doesn't support target blank.

    0 讨论(0)
  • 2021-02-02 17:58

    Select Window

    For this you will need to use the selectWindow | windowName command.

    To go back to the main window from the other window then do 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
    

    has been selected, all commands go to that window. To select the main window again, use null as the target.

    Window locators provide different ways of specifying the window object:
    

    by title, by internal JavaScript "name," or by JavaScript variable.

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

    appears in the title bar. Be careful; two windows can share the same title. If that happens, this locator will just pick one. * name=myWindow: Finds the window using its internal JavaScript "name" property. This is the second parameter "windowName" passed to the JavaScript method window.open(url, windowName, windowFeatures, replaceFlag) (which Selenium intercepts). * var=variableName: Some pop-up windows are unnamed (anonymous), but are associated with a JavaScript variable name in the current application window, e.g. "window.foo = window.open(url);". In those cases, you can open the window using "var=foo".

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

    mean like this:

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

    user is referring to the original window instantiated by the browser).

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

    name in the current application window, then it is assumed that this variable contains the return value from a call to the JavaScript window.open() method.

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

    names to window "names".

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

    to try to find the appropriate "title". Since "title" is not necessarily unique, this may have unexpected behavior.

    If you're having trouble figuring out the name of a window that you want
    

    to manipulate, look at the Selenium log messages which identify the names of windows created via window.open (and therefore intercepted by Selenium). You will see messages like the following for each window as it is opened:

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

    use with selectWindow()) is "myNewWindow"

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

    window.open (if the call occurs during or before the "onLoad" event, for example). (This is bug SEL-339.) In those cases, you can force Selenium to notice the open window's name by using the Selenium openWindow command, using an empty (blank) url, like this: openWindow("", "myFunnyWindow").

    selectWindow(windowID)

    selectPopup

    If it is a popup then do selectPopUp | windowId and then to go back to the main window do selectWindow | null

    selectPopUp(windowID) 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
      3. The title of the window. This is the same ordered lookup performed by selectWindow
    0 讨论(0)
  • 2021-02-02 18:01

    You can store the random window ID (generated by Selenium IDE) using ‘storeAttribute’ command. You just need to store the ID in a variable and then you can select the window using ‘selectWindow’ command.

    Try using this:

    <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> 
    
    0 讨论(0)
  • 2021-02-02 18:04

    Try this using Selenium Web Driver 2:

    driver.switch_to.window(driver.window_handles.last);
    
    0 讨论(0)
提交回复
热议问题