自动化(IE ComObject)填充文本框

Avs*_*lom 10 html powershell internet-explorer automation comobject

我正在尝试自动化Outlook Web Access网站,填写一些文本框并单击按钮,

我可以在第一页(登录)和提交按钮中找到相关元素,所以我通过了登录阶段,我的问题是找到带有蒙版文本框的某个页面内的元素,我附上了3个步骤的快照,以及对象的DOM图像.

登录页面

$IE = New-Object -ComObject InternetExplorer.Application
$URL = 'https://somewebsite/ecp/?rfr=owa&p=PersonalSettings/Password.aspx'
$IE.Visible = $true
$IE.Navigate($URL)
While ($IE.Busy -eq $true) {Start-Sleep -Milliseconds 2000} 

$ie.Document.getElementById('username').value = "username"
$ie.Document.getElementById('password').value = "password"
$Submit = $ie.Document.getElementsByTagName('Input') | ? {$_.Type -eq "Submit"}
$Submit.click()
Run Code Online (Sandbox Code Playgroud)

到目前为止这么好,我的问题从里面的页面开始,我只是找不到密码字段的textboxes元素,

在此输入图像描述

这里还有这些元素的DOM快照:

在此输入图像描述

我真的很感激任何帮助

Loï*_*HEL 1

当我尝试在 sharepoint 上自动上传文件时,我遇到了同样的问题。诀窍在于上传表单在新框架内打开。

<iframe id="Dlg..." class="ms-dlgFrame" src="https://.../Upload.aspx?List=..."></iframe>
Run Code Online (Sandbox Code Playgroud)

因此,为了获取输入字段,我必须查看每个打开的框架并选择位置合适的框架:

for($i=0;$i -lt $ie.Document.frames.length;$i++){
   if( $ie.Document.frames.item($i).location.href -match 'upload.aspx' ){
       $frm=$ie.Document.frames.item($i)}
 }
Run Code Online (Sandbox Code Playgroud)

从那时起我就能够定位输入字段:

$frm.document.body.getElementById("txtOldPwd") 
Run Code Online (Sandbox Code Playgroud)