Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Powershell脚本,用于单击网站上的onclick img alt HTML元素_Java_Html_Css_Powershell - Fatal编程技术网

Java Powershell脚本,用于单击网站上的onclick img alt HTML元素

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

我正在尝试让我的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: (:) [], 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时,我做了几件事来调试脚本。你可以做一个或两个。我建议先试试第一个:

  • 使用Powershell调试器。尝试在引用
    $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*"}