Java Powershell脚本,用于单击网站上的onclick img alt HTML元素
我正在尝试让我的powershell脚本单击网站上的以下对象 源代码: 注意:不会发布用户名、密码和URL变量 错误Java Powershell脚本,用于单击网站上的onclick img alt HTML元素,java,html,css,powershell,Java,Html,Css,Powershell,我正在尝试让我的powershell脚本单击网站上的以下对象 源代码: 注意:不会发布用户名、密码和URL变量 错误 You cannot call a method on a null-valued expression. At H:\Desktop\Scripts\TEST.ps1:56 char:1 + $link.click() + ~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeExcept
You cannot call a method on a null-valued expression.
At H:\Desktop\Scripts\TEST.ps1:56 char:1
+ $link.click()
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull –
正如错误中所解释的,您的问题源于以下行未返回任何值:
$link=$ie.Document.getElementsByTagName('A') | Where-Object {$_.href -eq "document.selectAccountsGroupsForm.action='manageAccountsGroups.do?method=showAllAccountGroups';document.selectAccountsGroupsForm.submit();"}
编辑 您或许可以测试:
$link=$ie.Document.getElementsByTagName('A') | Where-Object {$_.outerhtml -like "*document.selectAccountsGroupsForm.action*"}
当我开发Powershell代码来控制IE时,我做了几件事来调试脚本。你可以做一个或两个。我建议先试试第一个:
$ie.Document
的第一行上设置断点(Set breakpoint
)。然后逐行执行(?
以获取帮助和v
以执行步骤),并检查脚本每行的结果值。例如,在分配给$ie.Document.getElementById(“userName”).value之后,请在调试器中键入该表达式,并查看它是否生成您期望的用户名。当使用getElementsByTagName
到达行时,您可能希望在调试器中执行类似$test=$ie.Document.getElementsByTagName('A')
的操作,然后查看$test
中的内容。在准确理解$test
中的内容后,可以调整where object
语句以获得所需内容。或者,如果元素甚至不在$test
中,您就会知道这一点
getElementsByTagName
的结果。在调试器中,您可以以速记方式执行这些调试函数(而不是手动键入较长的表达式)。除非您使用PS和IE进行大量开发/调试,否则这可能没有意义您正在尝试按“href”筛选元素,但您的源代码没有它。您发布的代码有什么问题?IE是你唯一可以使用的浏览器吗?是的,我只能使用IE,因为我在工作中使用这个脚本。我遇到的问题是,我需要脚本单击一个名为“显示所有帐户”的按钮,当单击该按钮时,它会显示您发布的代码是否不起作用?当我在Windows Powershell上运行该代码时,会出现以下错误:无法对空值表达式调用方法。在H:\Desktop\Scripts\TEST.ps1:56 char:1+$link.单击()++~~~~~~~~~~~~~~~~~~+CategoryInfo:InvalidOperation:(:)[],RuntimeException+FullyQualifiedErrorId:InvokeMethodUnlull您应该发布类似于原始帖子中异常的详细信息,而不是几天后在评论中。我如何编辑代码以使其返回值?我测试了上面的代码,PowerShell返回了上面描述中列出的相同错误
$link=$ie.Document.getElementsByTagName('A') | Where-Object {$_.href -eq "document.selectAccountsGroupsForm.action='manageAccountsGroups.do?method=showAllAccountGroups';document.selectAccountsGroupsForm.submit();"}
$link=$ie.Document.getElementsByTagName('A') | Where-Object {$_.outerhtml -like "*document.selectAccountsGroupsForm.action*"}