Powershell - 单击 div 中的 href 链接

标签 powershell hyperlink click

我确信这个问题之前一定已经得到回答,但我想我只是不知道我应该在搜索术语中使用什么。

我正在尝试让 powershell 单击一个简单的“a href”链接。但到目前为止,我发现的所有用于单击内容的 powershell 示例都使用按钮。当我尝试重写按钮单击脚本以单击链接时,我收到“您无法在空值表达式上调用方法”错误消息。

我要点击的链接的来源是:

    <div id="reportTreer1r3" style="padding-left:32px;" uid="2.-83016" nowrap 
    class="treeNode" onClick="reportTree.onSelect('r1r3');" onDblClick="reportTree.onDblSelect('r1r3');
    " BP_REPORT_ID="-83016" reportType="report" isRemovable="false">
    <nobr>
      <a href="#r1r3" onClick="return false;" onKeyDown="reportTree.onKeyDown(this);">
        <span>
          <label class="hidden-label"> Tree level 1, 4 of 4. </label>
          <span>Adherence Summary</span>
        </span>
        <label name="SelectInfo" class="hidden-label"></label>
      </a>
    </nobr>
    </div>

不幸的是,该链接没有被赋予自己的元素 id,所以我不能只是在它上面“getElementByID”,而是我尝试了很多类似的事情......

    $link = $doc.getElementsByTagName('a') | Where-Object {$_.href -eq '#r1r3'} 
    $link.click() 

...但似乎都不起作用。

如有任何建议,我们将不胜感激!

最佳答案

我认为这里的问题不完全是你的代码,而是你用来选择特定链接的问题。您需要使用重要字符 ` 来转义 #。此外,您还想使用 -match 而不是 -eq,因为 $_.href 不仅仅包含 #r1r3,它只是以 #r1r3 结尾。

$link = $doc.getElementsByTagName('a') | Where-Object {$_.href -match '`#r1r3'} 
$link.click() 

这应该适合你。

编辑:这就是我所做的。我将您的示例 HTML 保存在桌面上的文档 test.html 中,因为我就是这么懒。然后我做了:

$ie = new-object -ComObject InternetExplorer.Application
$ie.Navigate("C:\users\310080829\Desktop\test.html")
$IE.Document.getElementsByTagName('a')

现在会吐出一大堆东西,所以如果我不将它们全部粘贴到这里,请原谅我。但后来我尝试了Where位:

$IE.Document.getElementsByTagName('a')|?{$_.href -match '`#r1r3'}

...它什么也没返回。嗯...WTF。哦,等等,我用的是单引号而不是双引号。哎呀,再次尝试使用 -match "`#r1r3",事情会变得更好。

$IE.Document.getElementsByTagName('a')|?{$_.href -match "`#r1r3"}

这就是门票!现在我有了一个可以使用的对象。是的,当然,有些属性是 True 或 False,但还有很多其他属性,例如 InnerHTML、InnerText、OuterHTML、OuterText...嗯,很多。另外,如果我将其通过管道传输到 |GM,它会列出该对象的所有属性和方法...包括 Click

所以,我认为真正的问题是我复制并粘贴了您的代码并只是对其进行了一些修改,我实际上没有注意到 ' vs "问题。请重试:

$link = $doc.getElementsByTagName('a') | Where-Object {$_.href -match "`#r1r3"}
$Link.Click

我吸取了教训,很抱歉造成困惑。

关于Powershell - 单击 div 中的 href 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693819/

相关文章:

windows - 使用模拟用户在 File.Encrypt 上获取 System.IO.IOException

java - 是否也可以在文档中生成带有源代码的 JAVA 文档?

javascript - 如何在滚动时平滑滚动到下一个目标元素

javascript - 使用 CasperJS 单击第二张图像

powershell - PowerShell Access.Application Transfertext 将数字列导出到 CSV 文件时保持小数精度

python - 无法使用带有 os.environ.get 的 PowerShell 读取环境变量集

optimization - 优化 PowerShell 模块导入

python - 无法使用 selenium 和 python 从 html 表中检索链接

seo - 页面重定向和 SEO

android - 单击最后一个项目后在 Activity 中启用按钮