找回密码
 加入
搜索
查看: 2227|回复: 12

求助!!如何定位网页中弹出的模态对话框里面的元素?

[复制链接]
发表于 2009-6-18 16:52:04 | 显示全部楼层 |阅读模式
本帖最后由 幻翼蝴蝶 于 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没有几天,实在是弄得晕头转向,求助各位高手帮忙解决一下吧,小女子不胜感激!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-6-18 17:48:18 | 显示全部楼层
没地址  没办法试  这样的应该是可以点击到的
发表于 2009-6-18 18:09:39 | 显示全部楼层
刚刚接触Autoit没有几天,实在是弄得晕头转向,求助各位高手帮忙解决一下吧,小女子不胜感激!!
幻翼蝴蝶 发表于 2009-6-18 16:52


怎么最近很多技术的论坛都流行‘小女子’一称啊
呵呵,是不是想引起男人骨子里边的怜香惜玉之情啊
连金牌会员rho123 大侠都现身了...
还拜服石榴裙下
小女子一词,魅力不小啊

想问题得到解决就上网页源码吧
发表于 2009-6-18 18:28:55 | 显示全部楼层
lynfr8

邪恶,哈哈


开玩笑



你是在哪些论坛,见到  小女子 求助

我所在的破解组织论坛没见过,大概是因为那里不能 求要 破解。。。
 楼主| 发表于 2009-6-18 21:47:32 | 显示全部楼层
本帖最后由 幻翼蝴蝶 于 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>

因为太多了不好都复制过来,请帮忙看看这些够了吗?谢谢
发表于 2009-6-18 22:16:33 | 显示全部楼层
$objs=_IEFormElementGetObjByName ("targetFolderID")
然后就可以了
发表于 2009-6-18 22:56:05 | 显示全部楼层
#include <IE.au3>
$oIE = _IECreate ("...")
Sleep(1000)
$o = _IEGetObjById ($oIE, "Radio1")
_IEAction ($o, "click")
Sleep(1000)
$o = _IEGetObjById ($oIE, "Radio2")
_IEAction ($o, "click")
 楼主| 发表于 2009-6-18 23:18:21 | 显示全部楼层
#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


谢谢,但是按您的方法好像并不是根据名字来点前面的单选框的,"Radio1"和"Radio2"在后面的代码中一直是重复的,所以我想用这个是不能直接定位到我想要的地方的,比如说我想点000Derrick这个文件前面的单选框,那该怎样做?谢谢。
发表于 2009-6-19 20:34:16 | 显示全部楼层
先说说 _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")  
不知道行不行 试了才知道
发表于 2009-6-19 20:35:31 | 显示全部楼层
怎么最近很多技术的论坛都流行‘小女子’一称啊
呵呵,是不是想引起男人骨子里边的怜香惜玉之情啊
连金牌会员rho123 大侠都现身了...
还拜服石榴裙下
小女子一词,魅力不小啊

想问题得到解决 ...
lynfr8 发表于 2009-6-18 18:09


发表于 2009-6-19 21:59:25 | 显示全部楼层
大侠出手 不凡啊
侠义心肠值得佩服
发表于 2009-6-20 16:22:20 | 显示全部楼层
很遗憾经测试
_IEFormElementRadioSelect ($oForm, "0c00007a80008a94|000Derrick", "targetFolderID", 1, "byValue")  无效
 楼主| 发表于 2009-6-23 16:36:22 | 显示全部楼层
谢谢几位大哥了,我本是想根据名字来点击前面的radio button,但是看来这个好像实现不了了,如果autoit可以根据Xpath点击的话就好了。不管怎么说谢谢各位的帮助
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-10 20:06 , Processed in 0.082268 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表