求助!!如何定位网页中弹出的模态对话框里面的元素?
本帖最后由 幻翼蝴蝶 于 2009-6-23 16:37 编辑通过点击网页上的链接,弹出了模态的网页对话框(见下图),现在的目的是想根据写好的测试用例点击这个对话框里面某个radio button。(比如说想点“00alice”这个文件前面的Radio button)
目前的情况是:
WinWaitActive("Folder Browser -- Web Page Dialog","",300);
$oIE = _IEAttach ("Folder Browser -- Web Page Dialog", "DialogBox")
_IELinkClickByText ($oIE, "00alice")
这样可以点击到00alice这个链接进去,但不是我想要的,我想点击到它前面的单选框。
刚刚接触Autoit没有几天,实在是弄得晕头转向,求助各位高手帮忙解决一下吧,小女子不胜感激!! :face (35): 没地址没办法试这样的应该是可以点击到的 刚刚接触Autoit没有几天,实在是弄得晕头转向,求助各位高手帮忙解决一下吧,小女子不胜感激!!
幻翼蝴蝶 发表于 2009-6-18 16:52 http://www.autoitx.com/images/common/back.gif
怎么最近很多技术的论坛都流行‘小女子’一称啊
呵呵,是不是想引起男人骨子里边的怜香惜玉之情啊
连金牌会员rho123 大侠都现身了...
还拜服石榴裙下
小女子一词,魅力不小啊
:face (24):
想问题得到解决就上网页源码吧 lynfr8
邪恶,哈哈
开玩笑
你是在哪些论坛,见到小女子 求助
我所在的破解组织论坛没见过,大概是因为那里不能 求要 破解。。。 本帖最后由 幻翼蝴蝶 于 2009-6-18 21:55 编辑
2# rho123
前4个radio button的代码是这样的:
<tr>
<td width="15px"><input id="Radio2" name="targetFolderID" type="radio"value = '0c00007a80004167|0002222' onclick = "radioButtonClicked(this)" /></td>
<td><input type="image" name="ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl00$imgButton" id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl00_imgButton" src="/_layouts/CSSP/Images/t_dm_cabinet_16.gif" style="height:16px;width:16px;border-width:0px;" /></td>
<td>
<a id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl00_LinkButton1" href="javascript:__doPostBack('ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl00$LinkButton1','')">0002222</a></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl00_lblTitle"></span></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl00_lblSubject"></span></td>
</tr>
<tr class="ms-alternating">
<td width="15px"><input id="Radio1" name="targetFolderID" type="radio"value = '0c00007a80008a94|000Derrick' onclick = "radioButtonClicked(this)" /></td>
<td><input type="image" name="ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl01$imgButton" id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl01_imgButton" src="/_layouts/CSSP/Images/t_dm_cabinet_16.gif" style="height:16px;width:16px;border-width:0px;" /></td>
<td>
<a id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl01_LinkButton1" href="javascript:__doPostBack('ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl01$LinkButton1','')">000Derrick</a></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl01_lblTitle"></span></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl01_lblSubject"></span></td>
</tr>
<tr>
<td width="15px"><input id="Radio2" name="targetFolderID" type="radio"value = '0c00007a80002d0a|000RoyCabinetForTest' onclick = "radioButtonClicked(this)" /></td>
<td><input type="image" name="ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl02$imgButton" id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl02_imgButton" src="/_layouts/CSSP/Images/t_dm_cabinet_16.gif" style="height:16px;width:16px;border-width:0px;" /></td>
<td>
<a id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl02_LinkButton1" href="javascript:__doPostBack('ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl02$LinkButton1','')">000RoyCabinetForTest</a></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl02_lblTitle"></span></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl02_lblSubject"></span></td>
</tr>
<tr class="ms-alternating">
<td width="15px"><input id="Radio1" name="targetFolderID" type="radio"value = '0c00007a8000445e|000STest' onclick = "radioButtonClicked(this)" /></td>
<td><input type="image" name="ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl03$imgButton" id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl03_imgButton" src="/_layouts/CSSP/Images/t_dm_cabinet_16.gif" style="height:16px;width:16px;border-width:0px;" /></td>
<td>
<a id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl03_LinkButton1" href="javascript:__doPostBack('ctl00$PlaceHolderDialogBodySection$PlaceHolderDialogBodyMainSection$repeaterFolders$ctl03$LinkButton1','')">000STest</a></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl03_lblTitle"></span></td>
<td><span id="ctl00_PlaceHolderDialogBodySection_PlaceHolderDialogBodyMainSection_repeaterFolders_ctl03_lblSubject"></span></td>
</tr>
因为太多了不好都复制过来,请帮忙看看这些够了吗?谢谢 $objs=_IEFormElementGetObjByName ("targetFolderID")
然后就可以了 #include <IE.au3>
$oIE = _IECreate ("...")
Sleep(1000)
$o = _IEGetObjById ($oIE, "Radio1")
_IEAction ($o, "click")
Sleep(1000)
$o = _IEGetObjById ($oIE, "Radio2")
_IEAction ($o, "click") #include
$oIE = _IECreate ("...")
Sleep(1000)
$o = _IEGetObjById ($oIE, "Radio1")
_IEAction ($o, "click")
Sleep(1000)
$o = _IEGetObjById ($oIE, "Radio2")
_IEAction ($o, "click")
lynfr8 发表于 2009-6-18 22:56 http://www.autoitx.com/images/common/back.gif
谢谢,但是按您的方法好像并不是根据名字来点前面的单选框的,"Radio1"和"Radio2"在后面的代码中一直是重复的,所以我想用这个是不能直接定位到我想要的地方的,比如说我想点000Derrick这个文件前面的单选框,那该怎样做?谢谢。 先说说 _IEFormElementRadioSelect
返回给定表单元素的值(单选按钮Radio).
#include <IE.au3>
_IEFormElementRadioSelect ( 对象变量, "字符串" , 名称 [, $f_select = 1 [, 模式 = "byValue" [, $f_fireEvent = 1]]] )
参数
对象变量 InternetExplorer.Application,窗口或者框架(frame)对象的对象变量
"字符串" 匹配元素的值--按设定中模式
名称 单选按钮(Radio)组的名称或者ID
$f_select [可选]: 定义单选按钮(Radio)元素是否需要被选择或者不选择
-1 = 返回选择的状态
0 = 不选中单选按钮(Radio)元素
1 = (默认) 选中单选按钮(Radio)元素
模式 [可选]: 定义搜索模式
byValue = (默认) 想要选择单选按钮(Radio)项目的值
byIndex = 想要选择单选按钮(Radio)项目的索引值(0 based)
$f_fireEvent [可选]:定义在改变值时是否触发OnChange和OnClick的事件
0 = 在设置值后不触发OnChange或者OnClick事件
1 = (默认) 在设置值后触发OnChange或者OnClick事件
返回值
成功: 如果参数$f_select = -1, 返回当前选择的状态, 否则返回 1
失败: 返回0 并且设置 @ERROR
@Error: 0 ($_IEStatus_Success) = 无错误
3 ($_IEStatus_InvalidDataType) = 无效数据类型
4 ($_IEStatus_InvalidObjectType) = 无效对象类型
5 ($_IEStatus_InvalidValue) = 无效值
7 ($_IEStatus_NoMatch) = 不匹配
@Extended: 包含无效参数数量
要点击哪个单选项 有几种方法
第一3楼的说过了
第二按Radio的索引点击
_IEFormElementRadioSelect ($oForm, 3, "radioExample", 1, "byIndex")
$oForm 表单对象 3 表示第几个Radio 1表示选中 byIndex参数
第三 按Radio的Value值点击
_IEFormElementRadioSelect ($oForm, "vehicleAirplane", "radioExample", 1, "byValue")
$oForm 表单对象 vehicleAirplane 表示Value值 1表示选中 byValue参数
网页源码没给全 没办法下手
具体方法 可以用正则表达式获取网页所有的 Value值 用第三种方法匹配 上面的网页源码已经显示出Value值不固定
0c00007a80004167|0002222 0c00007a80008a94|000Derrick这样的就需要判断下,怎么判断
就不说了
_IEFormElementRadioSelect ($oForm, "0c00007a80008a94|000Derrick", "targetFolderID", 1, "byValue")
不知道行不行 试了才知道 {:2_72:}
怎么最近很多技术的论坛都流行‘小女子’一称啊
呵呵,是不是想引起男人骨子里边的怜香惜玉之情啊
连金牌会员rho123 大侠都现身了...
还拜服石榴裙下
小女子一词,魅力不小啊
:face (24):
想问题得到解决 ...
lynfr8 发表于 2009-6-18 18:09 http://www.autoitx.com/images/common/back.gif
{:2_82:} 大侠出手 不凡啊
侠义心肠值得佩服
{:2_75:} 很遗憾经测试
_IEFormElementRadioSelect ($oForm, "0c00007a80008a94|000Derrick", "targetFolderID", 1, "byValue")无效 谢谢几位大哥了,我本是想根据名字来点击前面的radio button,但是看来这个好像实现不了了,如果autoit可以根据Xpath点击的话就好了。不管怎么说谢谢各位的帮助:face (38):
页:
[1]