简化了Powershell Web客户端功能,让我轻松发布表单数据

时间:2013-11-09 04:02:06

标签: javascript php forms powershell web-client

我一直在使用这里找到的Internet Explorer自动化脚本: http://www.pvle.be/2009/06/web-ui-automationtest-using-powershell/

这让我可以使用这样的命令(函数)轻松发布表单数据:

NavigateTo "http://www.websiteURI/"
SetElementValueByName "q" "powershell variable scope"
SetElementValueByName "num" "30"
SetElementValueByName "lr" "lang_en"
ClickElementById "sb_form_go"

以上内容可让我将值发布到元素,然后点击提交表单。

我想使用辅助函数与Powershell的Web客户端进行等效操作。我还没有找到这样的剧本。我能找到的最接近的是The Scripting Guys, Send-WebRequest

http://gallery.technet.microsoft.com/scriptcenter/7e7b6bf2-d067-48c3-96b3-b38f26a1d143

我甚至不确定它是否符合我的预期(因为没有工作示例显示如何做我想要的事情)。

无论如何,我真的很感激一些帮助,让我开始做相当于我在那里展示的工作示例(尽可能简单)。还有一个好处是能够获取URI的元素名称列表,以便知道我想要提交的表单元素。

PS:我还需要能够指定用户代理和凭证;因此,包含这些的例子将是理想的。

1 个答案:

答案 0 :(得分:1)

您是否看过Invoke-WebRequest命令? (需要PowerShell 3.0或更高版本)我相信以下内容适用于提交数据

#POSTing data
Invoke-WebRequest http://www.websiteURI/ `
    -UserAgent 'My User Agent' `
    -Credential $cred `
    -Method Post `
    -Body @{
        q = 'powershell variable scope'
        num = 30
        lr = 'lang_en'
    }

对于您的奖金,Invoke-WebRequest的结果包含页面上的InputFields集合,您可以使用它来获取要设置的表单元素列表。

#List input elements
Invoke-WebRequest http://www.websiteURI/ | select -ExpandProperty InputFields