InternetExplorer.Application, установите флажок и PowerShell - PullRequest
0 голосов
/ 31 марта 2019

У меня проблема с установкой флажка.Мне удалось успешно войти в систему и перемещаться по тегам ID, но у этого нет таковых.Единственные теги - это тип и класс.

Я могу найти этот раздел, используя $ ie.document.IHTMLDocument3_getElementByTagName ("input"), но я не могу найти способ его использовать.

Вот HTML-код, с которым я работаю:

<th class="cText sorting_disabled cHeader" rowspan="1" colspan="1" style="width: 5px;" aria-label="">
    <input type="checkbox" class="selectall"> 
</th>

Что у меня есть:

$ie = New-Object -ComObject "InternetExplorer.Application"
$ie.visible = "true"
$ie.navigate("https://some.site.com") 

while($ie.Busy) { Start-Sleep -Milliseconds 100 }

# login 
$usernameField = $ie.document.IHTMLDocument3_getElementByID("userid")
$passwordField = $ie.document.IHTMLDocument3_getElementByID("Password")
$usernameField.value = "email@domain.com"
$passwordField.value = "supercoolpassword"
$btn_Submit = $ie.document.IHTMLDocument3_getElementByID("btn_signIn")
$btn_Submit.click() 

# go to downloads page 
$ie.navigate("https://some.site.com/pages/mydownloads.aspx") 

# selectall packages to download has me clueless

Когда флажок установлен, результатом должны быть все флажкиследует поставить галочку.

1 Ответ

0 голосов
/ 31 марта 2019

Это обычное место, поэтому вы должны подходить к этому по-другому.

$SiteSource.AllElements | Where{$_.TagName -eq 'input'}

или, как если бы это была кнопка

($ie.Document.IHTMLDocument3_getElementsByTagName('button') | 
Where-Object innerText -eq 'SIGN IN').Click()

Но как вы ходите по сайту, чтобы получить необходимые объекты?

Подход, который я регулярно использую до принятия решения о кодировании.

$SiteSource = Invoke-WebRequest -Uri 'SomeUrl'

# single form site
$SiteSource.Forms | Format-List -Force


# multi-form sites
$SiteSource.Forms[0] | Format-List -Force
$SiteSource.Forms[1] | Format-List -Force

# Check for what can be used.
$SiteSource.Forms.Fields
$SiteSource.InputFields

Затем, собрав выше ... код для того, что можно найти и использовать.

$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true
$ie.navigate('SomeUrl') 

while($ie.ReadyState -ne 4) {start-sleep -m 100}

$UserID = $ie.document.getElementsByTagName('INPUT') | 
Where-Object {$($_.Name) -match 'userid'}
$UserId.value = 'UserID'

$UserPassword = $ie.document.getElementsByTagName('INPUT') | 
Where-Object {$($_.Name) -match 'password'}
$UserPassword.value = 'password'

$Submit = $ie.document.getElementsByTagName('INPUT') | 
Where-Object {$($_.Value) -match 'SomeString'}
$Submit.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...