簡體   English   中英

Powershell 腳本。 如何在瀏覽器中觸發輸入字段更改事件?

[英]Powershell script. How to trigger input field change event in the browser?

我正在嘗試更改以下網站中的輸入字段並觸發相關事件。 (“雜散表”選項卡中的“目標輸出頻率:”字段) https://www.analog.com/designtools/en/simdds/?part=AD9914&fin=3.5G&mult=1&ftw=24C118DE&rso=111111&harmonicDB=-40&useFilters= 1&fType=0&fTop=0&fOrder=6&fc=900M

我使用了以下代碼。 我成功單擊了選項卡並更改了輸入字段值,但無法觸發其關聯事件。 你能指導我怎么做嗎?

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true
$ie.Navigate("https://www.analog.com/designtools/en/simdds/?part=AD9914&fin=3.5G&mult=1&ftw=24C118DE&rso=111111&harmonicDB=-40&useFilters=1&fType=0&fTop=0&fOrder=6&fc=900M")

while ($ie.Busy -eq $true){Start-Sleep -seconds 1;}  

$spurtableBTN = $ie.Document.body.getElementsByClassName("dds-table-tab") | Where { $_.id -eq 'spur_table_tab' }

$spurtableBTN.click()

$inputFreq = $ie.Document.body.getElementsByClassName("ember-text-field") | Where { $_.id -eq 'target_output_freq_textbox' }
$inputFreq.value = "600M"
$inputFreq.onblur()

您不能像您嘗試的那樣對本網站執行此操作,因為他們正在阻止它。

如果您進一步查看頁面上的源代碼,它們會通過使用多個函數來捕獲您嘗試定位的所有元素事件。

基本上任何交互事件都會在該頻率字段更改后導致更新。 由於您無法在 PowerShell 的函數中調用或觸發這些方法,因此這將是一個 catch22。

您可能需要求助於諸如…… 使用 Selenium WebDriver 和 PowerShell 之類的東西

為了獲得您所追求的自動化水平。

這需要對博客文章進行一些挖掘,並查看通過主 IE 句柄公開的對象的屬性和方法,在示例中為 $ie。 我還查看了在 Internet Explorer 中使用 F12 的代碼和 Document 對象的 body 屬性。 對於我正在處理的站點,我找到了以下代碼段。 我需要網站在列表中顯示盡可能多的項目,默認為 100。

<select name="DisplayCount" id="DisplayCount" onchange="javascript:fetchList(1, this)">
    <option value="100" selected="">100
    <option value="500">500
    <option value="1000">1000
</option>

正如請求者指出的那樣,您可以更改該值,但它不會調用執行更新。

我找到了一個名為 FireEvent 的方法,經過幾次嘗試后,我發現要傳遞事件名稱“onchange”。 第一步是更改值,然后強制觸發 onchange 事件。

$numitems = $ie.Document.getElementById('DisplayCount')
$numitems.value = "1000"
$numitems.FireEvent("onchange")
While ($ie.Busy -eq $true) {Start-Sleep -Seconds 3;}

我是互聯網幫助的常客,但這是我第一次分享,我希望它有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM