IE Automation выбор раскрывающегося списка и обновление страницы с помощью Powershell

Я работаю над некоторыми IE automation, где он вытаскивает веб-страницу и изменяет параметры на странице. Это такие вещи, как текстовые поля, переключатели и выпадающие списки. Я могу изменить параметры, используя что-то вроде этого

$name = $doc.GetElementByID("name").value = "Bob"

Однако на этой странице есть выпадающий список, и при его изменении вручную появляется новый набор параметров. Если я использую приведенную выше команду для выбора опции, опция изменяется, однако страница не обновляется, чтобы новые опции появились, чтобы я мог их изменить. Есть ли в любом случае, чтобы» обновить » страницу, чтобы новые параметры появились после выбора опции в раскрывающемся списке?

Надеюсь, это имеет смысл. Искали и не смогли ничего найти.

Спасибо!

2 ответа

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

    Страница примера w3school, которую вы предоставили, ведет себя странно, и я не могу найти элементы правильно, вероятно, что-то связано с iFrame, который он использует.

    $ie = New-Object -ComObject 'internetExplorer.Application'
    $ie.Visible= $true
    $ie.Navigate("https://www.website.com")
    
    
    #wait for IE
    while ($ie.Busy -eq $true -or $ie.Document -eq $null ){Start-Sleep -seconds 1;} 
    
    
    $dropDown = $ie.Document.getElementByID( 'mySelect')
    $dropDown.value = 2
    $dropDown.FireEvent('onchange') 
    
  2. Это будет работать для веб-сайта в вашем примере (проверено на powershell 5):

    $ie = New-Object -ComObject internetexplorer.application
    $ie.Visible = $true
    $ie.Navigate("https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onchange")
    while ($ie.Busy) {Start-Sleep -Milliseconds 500}
    $ie.Document.getElementById("iframeResult").contentDocument.getElementById("mySelect")[1].selected = $true
    $ie.Document.getElementById("iframeResult").contentDocument.getElementById("mySelect").FireEvent("onchange")