2015-10-14 27 views
10

Tôi đang cố gắng để Tự động hóa một trang web Outlook Web Access, điền một số textbox và bấm vào một nút,Tự động hóa (IE ComObject) Điền Hộp để

Tôi có thể tìm thấy các yếu tố có liên quan trong trang đầu tiên (đăng nhập) và nút gửi, vì vậy tôi vượt qua giai đoạn đăng nhập, vấn đề của tôi là tìm các phần tử bên trong một số trang với hộp văn bản đeo mặt nạ, tôi đính kèm một ảnh chụp nhanh của 3 bước và cũng là hình ảnh DOM của đối tượng.

The Login Page

$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() 

cho đến nay rất tốt, bắt đầu vấn đề của tôi trong các trang bên trong, tôi chỉ không thể tìm thấy textbox yếu tố cho các lĩnh vực mật khẩu,

enter image description here

cũng đây ảnh chụp nhanh DOM cho các yếu tố đó:

enter image description here

Tôi thực sự đánh giá cao sự giúp đỡ

+0

Bạn có thể sử dụng WASP cho PowerShell [link] (https://wasp.codeplex.com). Nhập mô-đun. Khi ở trên một trang gần nơi bạn cần đến, bạn có thể sử dụng $ IE | Send-Keys "{TAB}" một lượng thời gian được đặt để điều hướng qua trang web để đến nơi bạn muốn. –

+0

wasp không phải là một tùy chọn, nên chạy trên nhiều hệ thống, WShell.SendKey không phải là một tùy chọn như wel, không ổn định ở tất cả – Avshalom

Trả lời

0

OK tôi thấy nó :)

vấn đề là các trang web đã có một hai IFrame, một bên kia,

$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() 

Cảm ơn cho tất cả mọi

0

Có thể sử dụng Tự động hóa giao diện người dùng.Chúng tôi có thể dễ dàng phát hiện phần tử bằng ID tự động và chúng tôi có thể dễ dàng thực hiện thao tác đọc/ghi. cảm thấy thoải mái khi sử dụng tự động hóa giao diện người dùng, nếu nó tốt thì tôi nghĩ tôi có thể giúp bạn. có nhiều thay đổi trong tự động hóa giao diện người dùng như

1) Tự động hóa giao diện người dùng.

2) Trắng

3) watin.etc.,

nếu bạn cảm thấy thoải mái với bất kỳ khuôn khổ sau đó tôi nghĩ rằng tôi có thể giúp bạn ra ngoài.

+0

U chỉ một lần đi qua các liên kết sau đây để có được ý tưởng ngắn gọn: Đường dẫn UI: [http://www.uipath.com/]
Tự động hóa giao diện người dùng: [https: // msdn.microsoft.com/en-us/library/ms747327(v=vs.110).aspx] Màu trắng: [https://github.com/TestStack/White] Watin: [http://watin.org/] –

1

Tôi có cùng một loại sự cố khi cố gắng automate a file upload on sharepoint. Bí quyết là biểu mẫu tải lên đã được mở trong một khung mới.

<iframe id="Dlg..." class="ms-dlgFrame" src="https://.../Upload.aspx?List=..."></iframe> 

Vì vậy, để có được những lĩnh vực đầu vào tôi phải nhìn vào từng khung hình mở và chọn một với vị trí tốt:

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)} 
} 

từ đó tôi đã có thể nhắm mục tiêu các lĩnh vực đầu vào:

$frm.document.body.getElementById("txtOldPwd") 
Các vấn đề liên quan