(已经解决)网页上面Submit按钮在自动化执行中总是disabled状态
本帖最后由 Genpact 于 2013-1-15 17:11 编辑正常手工情况:
Step1: 在webedit中输入一个值,然后submit按钮就会自动enable
自动化脚本执行的时候:
Browser("").page("").webedit(""). set "abc"
Submit按钮的状态一直是disabled
尝试过加个mic tab,还是不好用。求助大侠们有没有好的方法? 如果你知道native属性,那么直接强行改成enable就行了 好的,我尝试一下! 能具体一点嘛? 举个例子最好了 查看html该按钮的事件,set值后再触发一下该按钮的事件(比如mouse或key事件) 根本原因是set方法的作用是给文本框的text属性赋值,这和我们手工操作是不同的。手工操作时是2个操作,1是键盘按键,这是一个按键操作,2是通过按键操作触发了一个给文本框赋值的操作。也就是说我们正常的输入在计算机看来是2步操作,先按键再赋值,而QTP的set方法直接赋值。
很多程序都是在判断键盘操作,而不是判断赋值操作,当你按了什么键,程序就怎么样,你的这个例子就是当你在webedit中做按键操作,button就从不可用变成可用。在这种情况下,QTP是无法通过set方法触发对键盘操作的判断的。 尝试一下添加回车
Browser("").page("").webedit(""). set "abc"
Browser("").page("").webedit("").Type "micReturn" 添加回车不行,添加事件也不可以.都尝试过了..只有键盘触发才能把Submit button置成可用状态.有没有办法模拟键盘输入呢 方法有很多。说几个常用的。针对disable.htm页面,该文件代码如下:
<html>
<head><title>Disable change</title></head>
<body>
User Name:<input type=text id="username" onkeydown="if(this.value.length>=1){document.getElementById('login').disabled=false};if(this.value.length<1){document.getElementById('login').disabled=true};" /><p><input type=button id="login" value="login" disabled onclick="alert('Logon successed!');"/>
</body>
</html>
1 .object.属性
脚本如下:
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
Browser("Browser").Page("Page").Sync
Browser("Browser").Navigate "http://localhost:8081/webtest/disable.htm"
Browser("Browser").Page("Disable change").WebEdit("WebEdit").Set "abc"
Browser("Browser").Page("Disable change").WebButton("login").Object.disabled=false
Browser("Browser").Page("Disable change").WebButton("login").Click
Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("Disable change").Sync
Browser("Browser").Close
其中Browser("Browser").Page("Disable change").WebButton("login").Object.disabled=false是手写的。用dom对象强制修改对象webbutton("login")的源生属性disabled。
2 .object.outerhtml
脚本如下:
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
Browser("Browser").Page("Page").Sync
Browser("Browser").Navigate "http://localhost:8081/webtest/disable.htm"
Browser("Browser").Page("Disable change").WebEdit("WebEdit").Set "abc"
Browser("Browser").Page("Disable change").WebButton("login").Object.outerHTML="<input type=button id=""login"" value=""login"" onclick=""alert('Logon successed!');""/>"
Browser("Browser").Page("Disable change").WebButton("login").Click
Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("Disable change").Sync
Browser("Browser").Close
其中Browser("Browser").Page("Disable change").WebButton("login").Object.outerHTML="<input type=button id=""login"" value=""login""alert('Logon successed!');""/>"是手写的。在QTP中重写了web代码里关于login这个按钮的代码。
3 createobject("wscript.shell").sendkey
脚本如下:
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
Browser("Browser").Page("Page").Sync
Browser("Browser").Navigate "http://localhost:8081/webtest/disable.htm"
Browser("Browser").Page("Disable change").WebEdit("WebEdit").Click 1,1
createobject("wscript.shell").SendKeys "abc"
Browser("Browser").Page("Disable change").WebButton("login").Click
Browser("Browser").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
Browser("Browser").Page("Disable change").Sync
Browser("Browser").Close
其中Browser("Browser").Page("Disable change").WebEdit("WebEdit").Click 1,1和之前录制得有点不同,作用是把焦点放在文本框上,然后createobject("wscript.shell").SendKeys "abc"作用是发送键盘操作,点击"abc"3个字母键。
还有很多方法。 回复 8# Genpact
Set Wshell =CreateObject("Wscript.Shell")
Wshell.Sendkeys "abc"
这样就能够模拟键盘输入了 回复 10# awsdxz
模拟键盘操作,还是不要常去用。。。UI这块的东西要是变了,或者你刚好在操作别的什么,可能就不能够正常操作了吧 相当感谢泰然了,非常有用的方法,sendkey不是最终解决办法,最好还是改Object... 感谢
页:
[1]