如何在Selenium中检查是否使用JavaScript禁用了输入

Arg*_*ote 8 javascript selenium input

我正在使用selenium为webapp构建和自动化测试脚本,我正在尝试使用API 的waifForCondition函数,它将等待JS脚本求值true.

我目前在页面上有这个来源:

<input id="modifyHostsForm:idDnsIp0_0" type="text" name="modifyHostsForm:idDnsIp0_0" readonly="" disabled="">
Run Code Online (Sandbox Code Playgroud)

哪个应改为:

<input id="modifyHostsForm:idDnsIp0_0" type="text" name="modifyHostsForm:idDnsIp0_0">
Run Code Online (Sandbox Code Playgroud)

只要我在另一个字段上放置一个值并在其上触发"模糊"事件(此字段因此变为"启用").

我正在尝试执行以下JS脚本来测试何时启用此字段(基本上是我从"Google搜索"中找到的):

document.getElementbyId('modifyHostsForm:idDnsIp0_0').disabled == false
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个SeleniumException表明"对象不支持此属性或方法".我能在这做什么?任何帮助,将不胜感激.

Arg*_*ote 7

在调查之后我找到了答案.我在这里记录它,以防有人使用它.

我在FireBug控制台中运行我的问题代码,它运行正常; 然而,在执行我的剧本时,我一直得到SeleniumException.

事实证明,您需要使用selenium.browserbot.getCurrentWindow()RC在您正在使用的主窗口上执行JS脚本,而不是弹出的控制窗口.

因此,我实际需要评估的JS代码最终是这样的:

selenium.browserbot.getCurrentWindow().document.getElementById('modifyHostsForm:idDnsIp0_0').disabled == false
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好.谢谢你的其他提示.


And*_*per 5

尝试

document.getElementById('modifyHostsForm:idDnsIp0_0').getAttribute('disabled') == false
Run Code Online (Sandbox Code Playgroud)

您可能需要设置变量,然后检查它是否已设置或为null,因此:

var isDisabled = document.getElementById('modifyHostsForm:idDnsIp0_0').getAttribute('disabled')
Run Code Online (Sandbox Code Playgroud)

然后条件成为:

isDisabled == null || isDisabled == false
Run Code Online (Sandbox Code Playgroud)