Как вы ориентируетесь на новые окна с селеном ide? - PullRequest
12 голосов
/ 05 октября 2010

Я пытаюсь использовать селен, чтобы дублировать действие.Действие заключается в нажатии на ссылку, которая открывает новое окно.Как сделать селен идеальным фокусом на новом окне, а не на другом?Это не работает для меня.

Ответы [ 4 ]

8 голосов
/ 05 октября 2010

Выбрать окно

Для этого вам нужно будет использовать команду 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: находит окно, используя его внутреннее свойство "name" в JavaScript.Это второй параметр "windowName", переданный методу JavaScript window.open (url, windowName, windowFeatures, replaceFlag) (который перехватывает Selenium).* var = variableName: некоторые всплывающие окна являются неназванными (анонимными), но связаны с именем переменной 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

, чтобы попытаться найти соответствующий «заголовок».Поскольку «title» не обязательно уникален, это может привести к неожиданному поведению.

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

для манипуляции, посмотрите сообщения журнала Selenium, которые идентифицируют имена окон, созданных через window.open (и, следовательно, перехваченных Selenium).Появится сообщение, подобное следующему для каждого окна:

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, используя пустой (пустой) URL, например: openWindow ("", "myFunnyWindow").

selectWindow (windowID)

selectPopup

Если это всплывающее окно, выполните selectPopUp | windowId и затем вернитесь кглавное окно do selectWindow | null

selectPopUp(windowID) Аргументы:

  • windowID - идентификатор всплывающего окна, который может принимать различные значения

Упрощает процесс выбора всплывающего окна (и не предлагает функциональности, выходящей за рамки того, что уже обеспечивает selectWindow ()).

  • Если windowID либо не указан, либо задан как «ноль»,первое не верхнее окно выбрано.Верхнее окно - это то, которое будет выбрано selectWindow () без предоставления windowID.Это не должно использоваться, когда в игре более одного всплывающего окна.
  • В противном случае окно будет просматриваться с учетом идентификатора окна в следующем порядке:
    1. «Имя» окна, как указано в window.open ()
    2. Переменная JavaScript, которая является ссылкой на окно
    3. Заголовок окна.Это тот же упорядоченный поиск, который выполняет selectWindow
3 голосов
/ 18 июля 2012

Попробуйте это с помощью Selenium Web Driver 2:

driver.switch_to.window(driver.window_handles.last);
2 голосов
/ 23 сентября 2012

Подумайте об этом: вы бы предпочли просто удалить атрибут target="_blank"? Для меня это было решением:

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

Пребывание в том же окне имеет некоторые преимущества в Selenium IDE, поскольку оно не поддерживает целевой бланк.

2 голосов
/ 20 июня 2012

Вы можете сохранить случайный идентификатор окна (сгенерированный Selenium IDE) с помощью команды storeAttribute .Вам просто нужно сохранить идентификатор в переменной, а затем вы можете выбрать окно с помощью команды 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> 
...