Как проверить, отключен ли ввод с помощью JavaScript в Selenium - PullRequest
8 голосов
/ 29 марта 2011

Я создаю и автоматизирую сценарий тестирования для веб-приложения с использованием селена, и я пытаюсь использовать функцию API waifForCondition , где он будет ждать, пока сценарий JS не оценивается как true.

У меня сейчас есть этот источник на странице:

<input id="modifyHostsForm:idDnsIp0_0" type="text" name="modifyHostsForm:idDnsIp0_0" readonly="" disabled="">

Что должно измениться на:

<input id="modifyHostsForm:idDnsIp0_0" type="text" name="modifyHostsForm:idDnsIp0_0">

Как только я помещаю определенное значение в другое поле и запускаю на нем событие «размытия» (и это поле становится «активированным»).

И я пытаюсь выполнить следующий JS-скрипт, чтобы проверить, включено ли это поле (в основном то, что я нашел в "Googling"):

document.getElementbyId('modifyHostsForm:idDnsIp0_0').disabled == false

Однако я получаю SeleniumException, который указывает, что «Объект не поддерживает это свойство или метод». Что я могу сделать здесь? Любая помощь будет оценена.

Ответы [ 4 ]

7 голосов
/ 29 марта 2011

Изучив это, я нашел ответ.Я документирую это здесь на тот случай, если кто-нибудь его использует.

Я запустил код вопроса в консоли FireBug, и он работал правильно;однако при выполнении моего скрипта я продолжал получать SeleniumException.

Оказывается, вам нужно использовать selenium.browserbot.getCurrentWindow(), чтобы RC выполнил сценарий JS в главном окне, в котором вы находитесь.используя вместо всплывающего окна управления.

Таким образом, JS-код, который мне действительно нужно оценить, в итоге выглядит так:

selenium.browserbot.getCurrentWindow().document.getElementById('modifyHostsForm:idDnsIp0_0').disabled == false

, который работает просто отлично.Спасибо за другие подсказки.

5 голосов
/ 29 марта 2011

Попробуйте

document.getElementById('modifyHostsForm:idDnsIp0_0').getAttribute('disabled') == false

Вам может потребоваться установить переменную, а затем проверить, установлена ​​ли она или равна нулю, поэтому:

var isDisabled = document.getElementById('modifyHostsForm:idDnsIp0_0').getAttribute('disabled')

тогда условие становится:

isDisabled == null || isDisabled == false
1 голос
/ 13 марта 2012

Также убедитесь, что вы проверяете isDisabled == undefined:

isDisabled == null || isDisabled == false || isDisabled == undefined

1 голос
/ 29 марта 2011

Почти ... вам нужно:

if(document.getElementById('modifyHostsForm:idDnsIp0_0').disabled == false){
  //                  ^- Capital "B"
  //it is not disabled
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...