“选择要上传的文件”窗口中的Powershell脚本无法正常运行

时间:2016-04-15 15:42:19

标签: powershell internet-explorer sendkeys

我有一个脚本导航到一个网站,登录,然后点击一个按钮将文件上传到该网站。

单击按钮后会出现提示,我到目前为止已经发现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"

1 个答案:

答案 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执行。