gpt4 book ai didi

powershell - 在 powershell 中使用 IE 自动化登录到具有输入验证的网站

转载 作者:行者123 更新时间:2023-12-03 16:30:28 25 4
gpt4 key购买 nike

我正在尝试使用 PowerShell 登录网站。在下面的示例中,我尝试登录到 live.com。

我能够更新用户名字段,但网页运行某种不接受我的值的输入验证。如果我手动进入并编辑用户名字段,例如按空格键然后退格键,则输入有效。

我找到了一些关于更改焦点或使用 fireevent 的文档,但似乎都不起作用。

虽然 sendkeys 可以解决我的问题,但我以前遇到过很多 sendkeys 问题,我真的很想避免走这条路。

$Site = 'https://login.live.com'
$UserName = 'FakeUserName@outlook.com'

$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true
$ie.Navigate($Site)
while ($IE.busy)
{
Start-Sleep -Milliseconds 100
}
$Inputs = $IE.document.getElementsByTagName("input")
foreach ($Input in $Inputs)
{
if ($Input.type -eq "email")
{
$UserIDField = $Input
}
if ($Input.type -eq "submit")
{
$LoginButton = $Input
}
}

$UserIDField.focus()
$UserIDField.value = $UserName
$UserIDField.FireEvent('onchange')
$LoginButton.focus()
$LoginButton.click()

最佳答案

@Ranadip Dutta 确实如此,你不应该这样做,但如果你想自动化 Web 浏览器,Selenium 是一个很好的工具,在你的网站上自动化 Chrome 需要五分钟。您可以选择 IE 驱动程序、Mozilla 或 Opera。为此,请查看 Selenium .

# Selenium directory is the place where I expand Selenium Client & WebDriver Language Bindings for C#
$seleniumDir = 'D:\Developpements\Pgdvlp_PowerShell\selenium-dotnet-3.0.0'

# Selenium Webdriver
Add-Type -Path "$seleniumDir\net40\WebDriver.dll"
Add-Type -Path "$seleniumDir\net40\WebDriver.Support.dll"
Add-Type -Path "$seleniumDir\net40\ThoughtWorks.Selenium.Core.dll"
Add-Type -Path "$seleniumDir\net40\Selenium.WebDriverBackedSelenium.dll"

# With Chrome
# I Download Chrome driver here : https://chromedriver.storage.googleapis.com/index.html?path=2.25/
# It stands in "$seleniumDir" drive
$chrome = New-Object OpenQA.Selenium.Chrome.ChromeDriver "$seleniumDir"
#$chrome.Navigate().GoToUrl("https://fr.hightail.com/loginSpaces?redirect_url=https%3A%2F%2Fspaces.hightail.com%2Foauth%2Fhightail");
$chrome.Navigate().GoToUrl("https://login.live.com");
$Browser = $chrome

$email = $Browser.FindElements([OpenQA.Selenium.By]::Name('loginfmt'))
$email[0].SendKeys("adress@hotmail.com")
$button = $Browser.FindElements([OpenQA.Selenium.By]::Id('idSIButton9'))
$button.Click()
Start-Sleep 2
$passwd = $Browser.FindElements([OpenQA.Selenium.By]::Name('passwd'))
$passwd[0].SendKeys("toto")
$button = $Browser.FindElements([OpenQA.Selenium.By]::Id('idSIButton9'))
$button.Click()

关于powershell - 在 powershell 中使用 IE 自动化登录到具有输入验证的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557241/

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