Powershell IE Automation - невозможно указать текстовое поле по ID или TagName - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь использовать powershell для ввода текста в два текстовых поля. Я могу ввести значение в первое поле, но не во второе. Это связано с тем, что я не знаю, как изолировать второе текстовое поле, так как оно имеет тот же код, что и первое текстовое поле, включая такие вещи, как ID, Class, TagName и т. Д. c.

Ниже приведен мой код с удаленным URL (из-за работы). Сначала я думал изолировать второе текстовое поле, используя -ne для значения первого, так как при вводе значения оно дифференцировало код, однако, похоже, это не сработало. Я новичок в кодировании, поэтому мои извинения, если я выражаю себя плохо, но любая помощь, которую вы можете предоставить, будет принята с благодарностью.

Вот два текстовых поля, я могу ввести значение в первое с помощью powershell, но я не могу выделить второе текстовое поле для ввода значения в него. Это связано с тем, что две строки кода идентичны. См. Второе изображение

. Как видите, две строки кода для ввода идентичны, поэтому я не могу использовать GetElementById / TagName / Имя, чтобы указать, в какое текстовое поле я хочу, чтобы powershell ввел значение

$Web = "URL"
$Internet = New-Object -ComObject InternetExplorer.Application
$Internet.visible = $true
$Internet.Navigate($web)

While($Internet.Busy -eq $true){
Start-Sleep -Seconds 1
}

$Internet.document.getElementById("filterValue").value="Number"
$link = $Internet.Document.getElementsByTagName('a') | where-object {$_.innerText -eq 'Next Prompt'}
$link.click()

While($Internet.Busy -eq $true){
Start-Sleep -Seconds 1
}
**#Question about coding starts here**

$Input = $Internet.Document.IHTMLDocument3_getElementById("filterValue") 
$Input.value = "1/1/2020"

While($Internet.Busy -eq $true){
Start-Sleep -Seconds 1
}

$Input2 = $Internet.Document.IHTMLDocument3_getElementById("filterValue") | ? {$_.value -ne "1/1/2020"}
Start-Sleep -Seconds 4 
$Input2.value = "1/2/2020"

1 Ответ

1 голос
/ 27 марта 2020

Я проверил изображение кода HTML и похоже, что есть некоторые проблемы с кодом HTML.

enter image description here

  1. Идентификатор элемента HTML должен быть уникальным. Это означает, что на одной веб-странице не может быть более одного элемента с одинаковым идентификатором.

  2. Я также заметил, что элемент ввода имеет / в конце его для его закрытия. После него есть еще 2 закрывающих тега ввода. В HTML нет конечного тега для элемента Input. Так что это неверный код HTML.

  3. Проверьте и подтвердите, что вы ссылаетесь на правильный код для этих 2 текстовых полей. Попробуйте использовать инструменты разработчика, чтобы просмотреть HTML для этих 2 текстовых полей.

Предлагаю связаться с разработчиком сайта и сообщить им об этой проблеме.

...