我有一个脚本导航到一个网站,登录,然后点击一个按钮将文件上传到该网站。
单击按钮后会出现提示,我到目前为止已经发现SendKeys是一种可能的解决方案。但是,一旦窗口出现,脚本就会卡住。
这是我的代表:
$upload = $ie.Document.body.getElementsByTagName("input") | Where-Object {$_.Name -match "userfile"}
$upload.click()
$wshell.SendKeys("c:\path_to_my_file")
我甚至尝试用Write-host测试它。在这种情况下,它只会打印到控制台后我手动按下“选择要上传的文件”上的“取消”按钮
$upload = $ie.Document.body.getElementsByTagName("input") | Where-Object {$_.Name -match "userfile"}
$upload.click()
Write-Host "test"
答案 0 :(得分:0)
您可以使用AutoHotkey。而不是$wshell.SendKeys
,您将使用AHK Send
函数。您可以在powershell脚本内或之前运行此脚本(它可以等待selectfile对话框出现并自动插入文件名)。这将是:
start WaitForPrompt.ahk
$upload = $ie.Document.body.getElementsByTagName("input") | Where-Object {$_.Name -match "userfile"}
$upload.click()
WaitForPrompt.ahk
WinActivate <title of the window that appears>
Send c:\path_to_my_file
除此之外,您可以通过使用Invoke-WebRequest
和制作表单POST来避免所有这些(它肯定会起作用)。为此你需要看看浏览器向服务器发送了什么样的东西,你有各种各样的插件(即firefox的temperdata)。在Chrome中,您可以看到这一点并从开发人员工具中获取curl
命令,该命令可以从shell执行。