找回密码
 加入
搜索
查看: 2787|回复: 7

[IE类操作] IE基础操作选择的问题

[复制链接]
发表于 2018-12-15 17:16:48 | 显示全部楼层 |阅读模式
本帖最后由 32714107 于 2018-12-15 17:27 编辑

如何用autoit自动选择其中的一个邮箱,如@qq.com,假如@qq.com只是文字,不是链接,用的命令是不是也不一样的,谢谢大师们.

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 -50 收起 理由
afan -50

查看全部评分

发表于 2018-12-23 23:20:16 | 显示全部楼层
本帖最后由 逍遥逸仙 于 2018-12-24 08:30 编辑

楼主提到的网页地址是https://www.2345.com/,难道就不能直接给出地址吗?图片中的地址栏也没有,我还是根据图片搜索出来的。
通过查找网页源码,与邮箱相关的源码是下面这段:
<input type="hidden" name="domainss" value="163" id="mailDomainss" title="1">
<div class="select" id="J_select">
        <div class="select-ret bt-deaf">@163.com</div>
        <ul class="select-pop" id="J_selectList">
                <li data-value="163$1">@163.com</li>
                <li data-value="126$2">@126.com</li>
                <li data-value="sohu$4">@sohu.com</li>
                <li data-value="yeah$9">@yeah.net</li>
                <li data-value="139$10">@139.com</li>
                <li class="gray">弹出页登录</li>
                <li><a href="http://mail.qq.com/" data-value="qq" name="2" class="fred">@qq.com</a></li>
                <li><a href="http://mail.sina.com.cn/" data-value="sinacn" name="2" class="fred">@sina.com</a></li>
                <li><a href="http://qzone.qq.com/" data-value="qqkj" name="2">QQ空间</a></li>
                <li><a href="http://www.2345.com/mail.htm" data-value="moreEmail" name="2">更多邮箱?</a></li>
        </ul>
</div>
楼主提到的自动选择@qq.com是不存在的,因为点击文字@qq.com后会自动跳转到qq邮箱的登录页面,那你直接做一个跳转就行了,所以我们假定楼主原意是要自动选择@sohu.com
从源代码看,你光把<div class="select-ret bt-deaf">@163.com</div>改成<div class="select-ret bt-deaf">@sohu.com</div>是不行的,还得把<input type="hidden" name="domainss" value="163" id="mailDomainss" title="1">改成<input type="hidden" name="domainss" value="sohu" id="mailDomainss" title="4">,因为不能光改界面,还得同步修改表单。

列出以下方案,仅供参考(代码在Win7旗舰版sp1,IE9环境下通过)
#include<IE.au3>
Global $IE = _IECreate("https://www.2345.com/")
_IELoadWait ($IE);等待ie加载完成
;---------------------------------------------------------------------------------
;方案1,直接设置元素
;---------------------------------------------------------------------------------
$input=_IEGetObjById ( $IE, "mailDomainss");获取到的是DOM元素,DOM元素的所有属性和方法它都能使用
$Input.value="sohu"
$Input.title="4"
$divs = _IETagNameGetCollection ($IE, "div")
For $div In $divs                          ;$div是DOM元素,DOM元素的所有属性和方法它都能使用
        If $div.getAttribute("class")="select-ret bt-deaf" Then
                 $div.innerHTML='@sohu.com'
        EndIf
Next
;---------------------------------------------------------------------------------
;方案2,在页面运行JavaScript脚本
;---------------------------------------------------------------------------------
;$IE.document.parentWindow.execscript('document.getElementsByClassName("select-ret")[0].innerHTML="@sohu.com"')
;$IE.document.parentWindow.execscript('document.getElementById("mailDomainss").value="sohu"')
;$IE.document.parentWindow.execscript('document.getElementById("mailDomainss").title="4"')
;---------------------------------------------------------------------------------
;方案3,不可取,设置完后点击不能弹出登录界面
;---------------------------------------------------------------------------------
;$html=_IEBodyReadHTML($IE)
;$newHtml = StringRegExpReplace($html, '<input id="mailDomainss" title="1" name="domainss" value="163" type="hidden">', '<input id="mailDomainss" title="4" name="domainss" value="sohu" type="hidden">')
;$newHtml = StringRegExpReplace($newHtml, '<div class="select-ret bt-deaf">@163.com</div>', '<div class="select-ret bt-deaf">@sohu.com</div>')
;_IEBodyWriteHTML ( $IE , $newHtml )
方案3不可取,因为看似界面改成这样了

查看源码也不错

但是实际上点击输入框不能弹出以下登录界面

本帖子中包含更多资源

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

×

评分

参与人数 1金钱 +40 收起 理由
floor6ggg + 40

查看全部评分

 楼主| 发表于 2018-12-29 16:19:48 | 显示全部楼层
谢谢大神的回答
发表于 2018-12-30 21:47:53 来自手机 | 显示全部楼层
32714107 发表于 2018-12-29 16:19
谢谢大神的回答

那麻烦你把这个帖子标记已解决
发表于 2019-1-16 22:09:37 来自手机 | 显示全部楼层
做个标记,学习学习
发表于 2020-4-26 17:39:51 | 显示全部楼层
逍遥逸仙 发表于 2018-12-23 23:20
楼主提到的网页地址是https://www.2345.com/,难道就不能直接给出地址吗?图片中的地址栏也没有,我还是根 ...

老师,我这个复制代码后,界面没有变更呢
发表于 2020-4-26 18:09:23 | 显示全部楼层
逍遥逸仙 发表于 2018-12-23 23:20
楼主提到的网页地址是https://www.2345.com/,难道就不能直接给出地址吗?图片中的地址栏也没有,我还是根 ...

$IE.document.parentWindow.execscript('document.getElementsByClassName("select-ret")[0].innerHTML="@sohu.com"')
;$IE.document.parentWindow.execscript('document.getElementById("mailDomainss").value="sohu"')
;$IE.document.parentWindow.execscript('document.getElementById("mailDomainss").title="4"')

执行报错,是不是我的系统缺插件或者版本不对,谢谢
发表于 2020-6-15 00:00:19 | 显示全部楼层
mykillyou2 发表于 2020-4-26 18:09
$IE.document.parentWindow.execscript('document.getElementsByClassName("select-ret")[0].innerHTML=" ...

这是2020年啦,兄弟,网页的源代码都变了不知多少遍了
直接复制这些代码肯定不行啦,你得理解这代码都什么作用,然后根据源代码的变更来更新代码啊
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 11:09 , Processed in 0.076785 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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