【问题标题】:Powershell null-valued expression errorPowershell空值表达式错误
【发布时间】:2017-09-27 19:26:42
【问题描述】:

我是 Powershell 的新手,我在这个问题上苦苦挣扎的时间比我愿意承认的要长。我正在尝试自动填写 Intranet 网络表单,我认为这将非常简单。我已经完成了登录组件,但在填写表单上的“姓氏”文本框时遇到了问题。

$url = "www.myintranetsite.com"
$lastname="Smith" 
$firstname="John" 
$ie = New-Object -com internetexplorer.application; 
$ie.visible = $true; 
$ie.navigate($url); 
while ($ie.Busy -eq $true) 
{ 
Start-Sleep -Milliseconds 1000; 
} 
$ie.Document.getElementById("ERM_SEARCH_WRK_ERM_LAST_NAME_LBL").value = 
$lastname 

错误标记是我无法在空值表达式上调用方法。违规者是“ERM_SEARCH_WRK_ERM_LAST_NAME_LBL”

关于为什么 $lastname 会作为空值返回的任何建议?

![1]: https://i.stack.imgur.com/Jf8Ht.jpg ![2]:https://i.stack.imgur.com/pE71n.jpg

【问题讨论】:

  • 您的意思是错过了网址上的结尾“”吗?
  • 糟糕,已修复。感谢收看!

标签: javascript powershell internet-explorer powershell-3.0 ie-automation


【解决方案1】:

问题不是姓氏。它是元素。你能做这样的事情吗?

$doc = $ie.document
$lastname = $doc.getElementById('ERM_SEARCH_WRK_ERM_LAST_NAME_LBL')
$lastname.Value = "smith"

并且在元素 id 上使用单引号而不是双引号

一旦定义了 $lastname 对象,使用 | get-member 检查其成员,看看 value 是否是可用属性

【讨论】:

  • 嗯,value 似乎不是可用的属性。
  • 请问您使用的是Windows 10吗?因为我有一个类似的代码在 win7 上工作但在 win10 上失败。也许是IE的版本。我还没有真正尝试过调试它。
  • 不,我使用的是 Windows 7。32 位系统。 IE 11.
【解决方案2】:

您的问题是您尝试向标签添加值。

标签不包含值。

https://www.w3schools.com/TagS/tag_label.asp

根据您的图片,标签似乎是针对 ERM_SEARCH_WRK_ERM_LAST_NAME

$url = "www.myintranetsite.com"
$lastname="Smith" 
$firstname="John" 
$ie = New-Object -com internetexplorer.application; 
$ie.visible = $true; 
$ie.navigate($url); 
while ($ie.Busy -eq $true) 
{ 
Start-Sleep -Milliseconds 1000; 
} 
$ie.Document.getElementById('ERM_SEARCH_WRK_ERM_BO_NAME$542$').value = $lastname

【讨论】:

  • 感谢 ArcSet,那么如何在姓氏框中填写“Smith”?该语法是什么样的?
  • 发布了应该工作的代码,如果这不起作用,那么发布页面的源代码以便我可以找到输入的名称
  • 感谢您的帮助,但源代码超过 2000 行。这有帮助吗?
  • 我做到了,我收到了同样的信息。
  • 你需要找到输入标签...你继续发布标签标签
  • 【解决方案3】:

    我在尝试点击按钮时遇到同样的错误:

        $ie = new-object -com "InternetExplorer.Application"
        $ie.navigate("MyURL")
        $ie.visible = $true
        while ($ie.Busy -eq $true){  Start-Sleep -Milliseconds 1000;  }
        $doc = $ie.document
    $btn=$doc.getElementByID('ctl00_PageHeader1_ctl06_c_b_Start_c_b_View_c_b_ExportDefaultButton_ExportDefaultButton')
        $btn.click()
    

    错误是:“您不能在空值表达式上调用方法。”

    Windows 10 x64

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2021-10-15
    • 2013-11-26
    相关资源
    最近更新 更多