随笔 - 911  文章 - 5  评论 - 94  阅读 - 243万

IE自动化

自动打开www.baidu.com,并搜索关键字“abcd”

复制代码
 1 #定义函数:等待页面打开
 2 function WaitForLoad($ie)
 3 {
 4  sleep 2
 5  do {Sleep -Mi 200}
 6  while ($ie.busy)
 7 }
 8 
 9 $url="www.baidu.com"
10 $ie = new-object -com "InternetExplorer.Application"
11 $ie.navigate($url)
12 $ie.visible=$true
13 WaitForLoad $ie
14 #文字输入栏的ID为“kw”,搜索关键字为“abcd”
15 $ie.Document.getElementById("kw").Value="abcd"
16 #搜索按钮的ID为“su”,然后调用click()方法点击该按钮
17 $ie.Document.getElementById("su").click()
复制代码

参考:http://msdn.microsoft.com/zh-cn/magazine/cc337896.aspx

 

查找页面元素ID方法:

 

在调用 getElementById() 方法的时候,如果出现如下错误提示:“找不到“getElementById”的重载,参数计数为:“1”。”,可尝试如下解决方法:

1)getElementByID对PS和IE版本有要求:如下:
  PS2.0 With IE8
  PS3.0 With IE9
2)兼容性视图设置
3)关闭保护模式

 注:PS4.0 With IE10下未解决该报错

#################################

$ie.Document.getElementByID("table_set_main").getElementsByTagName("input")|?{$_.value -eq "restart"}|%{$_.click()}

#重启路由:
http://192.168.5.243/sys_cfg_valid.xgi?exe_str("submit REBOOT")

 

2015.3.26补充:

有的页面中的登录窗口可能会在iframe中,这样的话,直接通过$ie.Document.getElementByID("username")的办法是取不到 username 的输入窗口的,需要先获取到相应的iframe,然后再getElementByID("username"),但是有的iframe不但没有id,也没有name,所以就只能先通过 $login = $ie.Document.getElementsByTagName("iframe") | ? {$_.uniqueNumber -eq 3} 这样的方法获取到相应的iframe了,iframe的uniqueNumber是自己先获取到所有的iframe后,自己找到相应的iframe后找到的,也可以用 sourceindex值。

可以使用下面几种方法去.getElementById("username"),哪个可用就用哪个。

$login.Dcument.getElementById("username")
$login.contentWindow.getElementById("username")
$login.contentDocument.getElementById("username")

但如果iframe涉及到了跨域,那使用上面的方法还是无法获取到相应的元素,目前不知如何解决。

如下图中的 iframe src= https://mailsso.mxhichina.com.....

但该URL为mail.zanchina.com,就涉及到了跨域。

posted on   momingliu11  阅读(1819)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2013-09-26 IP及DNS设置(Netsh)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示