【发布时间】:2017-08-26 08:32:37
【问题描述】:
<div class="w-btn" ng-click="vm.callbacks.compareAll();" ng-if="vm.folderData.projects.length > 0 && vm.noneSelectedProjects" tabindex="0"><i class="glyphicon glyphicon-transfer btn-icon"></i> Report from all</div>
我需要使用 Powershell 来单击该按钮。该页面上有多个带有 class="w-btn" 的 div,但只有一个带有比较所有内容的 ng-click。
当该按钮被点击时,它会改变页面上的另一个标签,如下所示
<a href="/data/project/export/projects-tasks?projectIds[]=103473&projectIds[]=103474&projectIds[]=106186&projectIds[]=108395&projectIds[]=110653&projectIds[]=110657" target="_self" class="inline-btn pull-right" ng-if="vm.projects.length > 0">
添加项目时,第一个按钮会更改项目的 href。我必须编写这个脚本来单击第一个按钮,然后使用生成的 href 作为我 wget 中链接的一部分
到目前为止,我还没有做任何事情
$Link = 'https://url.com/folder/2880'
$html = Invoke-WebRequest -Uri $Link -UseDefaultCredentials
$btnclick = $html.getElementsByTagName("div") | Where-object{$_.Name -like 'ng-click="vm.callbacks.compareAll();"' }
当我随后向控制台写入以查看 $btnclick 是什么时,我得到一个错误:
Method invocation failed because [Microsoft.PowerShell.Commands.HtmlWebResponseObject] does not contain a method named 'getElementsByTagName'
最后,我想我会像$btnclick.Click() 一样在href 上再做一个getElement,这样我就可以拉动
/data/project/export/projects-tasks?projectIds[]=103473&projectIds[]=103474&projectIds[]=106186&projectIds[]=108395&projectIds[]=110653&projectIds[]=110657
取出。
感谢任何帮助完成此操作。高级概述是我需要从网页中单击一个 Angular js 按钮,然后从生成的 href 标记中提取一段 URL 以在 wget 中使用。
【问题讨论】:
-
你试过
$html.ParsedHtml.getElementsByTagName('div') |where name -like '…'吗?Invoke-WebRequest的Microsoft.PowerShell.Commands.HtmlWebResponseObject使用 IE 无头渲染 DOM,除非您添加-UseBasicParsing,并且返回的对象似乎有click()方法。
标签: html powershell