32714107 发表于 2018-12-15 17:16:48

IE基础操作选择的问题

本帖最后由 32714107 于 2018-12-15 17:27 编辑

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

逍遥逸仙 发表于 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").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不可取,因为看似界面改成这样了

查看源码也不错

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

32714107 发表于 2018-12-29 16:19:48

谢谢大神的回答

逍遥逸仙 发表于 2018-12-30 21:47:53

32714107 发表于 2018-12-29 16:19
谢谢大神的回答

那麻烦你把这个帖子标记已解决

zss66783 发表于 2019-1-16 22:09:37

做个标记,学习学习

mykillyou2 发表于 2020-4-26 17:39:51

逍遥逸仙 发表于 2018-12-23 23:20
楼主提到的网页地址是https://www.2345.com/,难道就不能直接给出地址吗?图片中的地址栏也没有,我还是根 ...

老师,我这个复制代码后,界面没有变更呢

mykillyou2 发表于 2020-4-26 18:09:23

逍遥逸仙 发表于 2018-12-23 23:20
楼主提到的网页地址是https://www.2345.com/,难道就不能直接给出地址吗?图片中的地址栏也没有,我还是根 ...

$IE.document.parentWindow.execscript('document.getElementsByClassName("select-ret").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").innerHTML=" ...

这是2020年啦,兄弟,网页的源代码都变了不知多少遍了
直接复制这些代码肯定不行啦,你得理解这代码都什么作用,然后根据源代码的变更来更新代码啊
页: [1]
查看完整版本: IE基础操作选择的问题