gpt4 book ai didi

internet-explorer - powershell 可以等到 IE 准备好 DOM 吗?

转载 作者:行者123 更新时间:2023-12-04 12:23:09 26 4
gpt4 key购买 nike

我目前正在编写一个脚本,我正在使用

while($IE.busy) {Start-Sleep 1}

等待页面准备就绪。

页面准备好后,我的脚本会填写并提交表单。我一直遇到问题,因为(我认为)IE 报告说它在页面加载时但在文档呈现之前完成(这会导致脚本出错)。我目前的解决方法是在页面加载后添加 4 秒的等待时间,但如果可能的话,我会更喜欢一种非基于时间的方法。

最佳答案

这是我如何做到这一点。

步骤 1 - 确定仅在页面完全呈现后才出现的网页元素。我使用显示 DOM View 的 Chrome 开发人员工具“元素” View 来完成此操作。

第 2 步 - 在脚本中建立一个等待循环,轮询元素是否存在或该元素内的文本值。

# Element ID to check for in DOM
$elementID = "systemmessage"

# Text to match in elemend
$elementMatchText = "logged in"

# Timeout
$timeoutMilliseconds = 5000

$ie = New-Object -ComObject "InternetExplorer.Application"

# optional
$ie.Visible = $true

$ie.Navigate2("http://somewebpage")
$timeStart = Get-Date
$exitFlag = $false

do {

sleep -milliseconds 100

if ( $ie.ReadyState -eq 4 ) {

$elementText = (($ie.Document).getElementByID($elementID )).innerText
$elementMatch = $elementText -match $elementMatchText

if ( $elementMatch ) { $loadTime = (Get-Date).subtract($timeStart) }

}

$timeout = ((Get-Date).subtract($timeStart)).TotalMilliseconds -gt $timeoutMilliseconds
$exitFlag = $elementMatch -or $timeout

} until ( $exitFlag )

Write-Host "Match element found: $elementMatch"
Write-Host "Timeout: $timeout"
Write-Host "Load Time: $loadTime"

关于internet-explorer - powershell 可以等到 IE 准备好 DOM 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22510779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com