自动化 (IE ComObject) 填充文本框
Automate (IE ComObject) Fill Textboxes
我正在尝试自动化 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()
到目前为止一切顺利,我的问题从里面的页面开始,我就是找不到密码字段的文本框元素,
这里还有这些元素的 DOM 快照:
非常感谢任何帮助
使用 UI Automation.there 我们可以使用自动化 ID 轻松检测元素,我们可以轻松执行 Read/Write 操作's.But 我不知道您是否愿意使用 UI 自动化,如果它很好,那么我想我可以帮助您。
UI 自动化中有很多选项,例如
1)UI自动化。
2)白色
3)watin.etc.,
如果您对任何框架感到满意,那么我想我可以帮助您。
我在尝试 时遇到了同样的问题。
诀窍是上传表单在新框架内打开。
<iframe id="Dlg..." class="ms-dlgFrame" src="https://.../Upload.aspx?List=..."></iframe>
因此,为了获得输入字段,我必须查看每个打开的框架和 select 具有良好位置的框架:
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)}
}
从那时起我就可以定位输入字段了:
$frm.document.body.getElementById("txtOldPwd")
好的,我找到了:)
问题是网站有两个 iframe
标签,一个在另一个里面,
$IFrame = $ie.Document.getElementsByTagName('iframe').item(0)
$IFrame = $IFrame.contentWindow.document.getElementsByTagName('iframe').item(0)
$PasswordSlab = $IFrame.contentWindow.document.getElementById('passwordSlab')
$PasswordSlab.document.getElementById('txtOldPwd').value = $OldPassword
$PasswordSlab.document.getElementById('txtNewPwd').value = $NewPassword
$PasswordSlab.document.getElementById('txtConfirmPwd').value = $NewPassword
$PasswordSlab.document.getElementById('save').click()
谢谢大家
我正在尝试自动化 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()
到目前为止一切顺利,我的问题从里面的页面开始,我就是找不到密码字段的文本框元素,
这里还有这些元素的 DOM 快照:
非常感谢任何帮助
使用 UI Automation.there 我们可以使用自动化 ID 轻松检测元素,我们可以轻松执行 Read/Write 操作's.But 我不知道您是否愿意使用 UI 自动化,如果它很好,那么我想我可以帮助您。 UI 自动化中有很多选项,例如
1)UI自动化。
2)白色
3)watin.etc.,
如果您对任何框架感到满意,那么我想我可以帮助您。
我在尝试
<iframe id="Dlg..." class="ms-dlgFrame" src="https://.../Upload.aspx?List=..."></iframe>
因此,为了获得输入字段,我必须查看每个打开的框架和 select 具有良好位置的框架:
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)}
}
从那时起我就可以定位输入字段了:
$frm.document.body.getElementById("txtOldPwd")
好的,我找到了:)
问题是网站有两个 iframe
标签,一个在另一个里面,
$IFrame = $ie.Document.getElementsByTagName('iframe').item(0)
$IFrame = $IFrame.contentWindow.document.getElementsByTagName('iframe').item(0)
$PasswordSlab = $IFrame.contentWindow.document.getElementById('passwordSlab')
$PasswordSlab.document.getElementById('txtOldPwd').value = $OldPassword
$PasswordSlab.document.getElementById('txtNewPwd').value = $NewPassword
$PasswordSlab.document.getElementById('txtConfirmPwd').value = $NewPassword
$PasswordSlab.document.getElementById('save').click()
谢谢大家