2009-09-18 27 views
5

Tôi đang viết một số tập lệnh tự động hóa Internet Explorer bằng PowerShell. Đây là cách tôi bắt đầu đối tượng com trên IE:Thực thi javascript máng Giao diện com của Internet Explorer bằng PowerShell

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

$doc = $ie.Document 

Vì vậy, điều tôi muốn làm là thực hiện một số javascript trên đối tượng $ doc. Ví dụ, tôi có một mục trên trang có sự kiện onclick thực hiện "submitCommand ('tra cứu") ", vì vậy tôi muốn chạy trực tiếp trên $ doc thay vì phải tìm đối tượng trên trang và sau đó gọi phương thức Click() trên đó. Nó sẽ dễ dàng hơn vì đối tượng không có tên hay id, làm cho nó rất hợp lý để thay đổi vì tôi chỉ có thể dựa vào vị trí của nó trên trang (ví dụ: mục nhịp 11 trên trang).

Cách khác, bạn sẽ chọn các phần tử dựa trên lớp học như thế nào? Điều đó sẽ giúp rất nhiều khi "nút" có lớp riêng của nó.

Cảm ơn

+0

Cách khác, bạn sẽ chọn các phần tử dựa trên lớp học như thế nào? Điều đó sẽ giúp rất nhiều khi "nút" có lớp riêng của nó. – Philippe

+2

@Philippe: Thay vì bình luận câu hỏi của riêng bạn với nhiều thông tin hơn và các câu hỏi tại sao không chỉ chỉnh sửa câu hỏi hiện có? – AnthonyWJones

Trả lời

4

$ nhịp = @ ($ ie.document.getElementsByTagName ("SPAN"))

ống đến nơi đối tượng để lọc một trong những bạn cần (dựa trên thuộc tính của nó) và sau đó gọi phương pháp nhấp chuột, ví dụ:

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

Không chính xác giải pháp mà tôi đã hy vọng, nhưng chắc chắn là một giải pháp sạch hơn cho vấn đề của tôi. Cảm ơn. – Philippe

+0

Nhân tiện, có cách nào để lưu trữ kết quả của vị trí trong mảng không? Trong trường hợp có nhiều hơn một kết quả để lọc, chỉ có một kết quả đầu tiên được trả lại nếu bạn lưu trữ nó trong một biến như thế này? – Philippe

+1

Bạn có thể bọc nó trong '@()': $ span11 = @ ($ spans | where {$ _. InnerText -eq 'something'}) –

Các vấn đề liên quan