【问题标题】:Execute javascript trough Internet Explorer's com interface using PowerShell使用 PowerShell 通过 Internet Explorer 的 com 接口执行 javascript
【发布时间】:2010-11-29 11:34:51
【问题描述】:

我正在使用 PowerShell 编写一些 Internet Explorer 自动化脚本。下面是我如何启动 IE com 对象:

$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate("about:blank")
$ie.visible = $true

$doc = $ie.Document

所以,我想做的是在$doc 对象上执行一些javascript。例如,我在页面上有一个具有onclick 事件的项目,该事件执行submitCommand('lookup'),所以我想直接在$doc 上运行它,而不必在页面上找到对象然后调用Click() 方法就可以了。

这会更容易,因为对象没有名称或 ID,因此更改非常明智,因为我只能依赖它在页面上的位置(例如:页面上的第 11 个跨度项目)。

另外,您将如何根据类选择元素?这会很有帮助,因为“按钮”有它自己的类。

谢谢

【问题讨论】:

  • 另外,您将如何根据它们的类来选择元素?这会很有帮助,因为“按钮”有它自己的类。
  • @Philippe:与其用更多信息和问题评论您自己的问题,不如简单地编辑现有问题?

标签: internet-explorer com powershell webautomation


【解决方案1】:

$spans=@($ie.document.getElementsByTagName("SPAN"))

管道到where-object来过滤你需要的那个(根据它的属性)然后调用click方法,例如:

$span11 = $spans | where {$_.innerText -eq 'something'}
$span11.click()

【讨论】:

  • 不完全是我希望的解决方案,但绝对是我的问题的更清洁的解决方案。谢谢。
  • 顺便问一下,有没有办法将 where 的结果存储在数组中?如果过滤的结果不止一个,如果将其存储在这样的变量中,则只返回第一个?
  • 你可以用'@()'包裹它:$span11 = @($spans | where {$_.innerText -eq 'something'})
猜你喜欢
  • 2011-01-15
  • 2014-08-12
  • 1970-01-01
  • 2019-04-29
  • 2020-11-28
  • 2010-10-16
  • 1970-01-01
  • 2021-08-26
  • 2011-03-01
相关资源
最近更新 更多