在表格中获取第n个标签A.

时间:2017-03-29 06:59:03

标签: html powershell dom

我是Powershell的新手,不是HTML / JS专家

我在网页上有这个表,请注意它不是页面上唯一的表,也不是唯一的A标签 - 之前有很多标签和表格。

<table id="row" class="simple">
   <thead>
      <tr>
         <th></th>
         <th class="centerjustify">File Name</th>
         <th class="centerjustify">File ID</th>
         <th class="datetime">Creation Date</th>
         <th class="datetime">Upload Date</th>
         <th class="centerjustify">Processing Status</th>
         <th class="centerjustify">Exceptions</th>
         <th class="centerjustify">Unprocessed Count</th>
         <th class="centerjustify">Discarded Count</th>
         <th class="centerjustify">Rejected Count</th>
         <th class="centerjustify">Void Count</th>
         <th class="centerjustify">PO Total Count</th>
         <th class="centerjustify">PO Total Amount</th>
         <th class="centerjustify">CM Total Count</th>
         <th class="centerjustify">CM Total Amount</th>
         <th class="centerjustify">PO Processed Count</th>
         <th class="centerjustify">PO Processed Amount</th>
         <th class="centerjustify">CM Processed Count</th>
         <th class="centerjustify">CM Processed Amount</th>
         <th class="centerjustify">Counts At Upload</th>
      </tr>
   </thead>
   <tbody>
      <tr class="odd">
         <td><input type="radio" disabled="disabled" name="checkedValue" value="12047" /></td>
         <td class="leftjustify textColorBlack">
            <a href="loadConfirmationDetails.htm?fId=12047">520100000000000_520100000000000_20170327_01.txt</a>
         </td>
         <td class="centerjustify textColorBlack">1</td>
         <td class="datetime textColorBlack">Mar 27, 2017 0:00</td>
         <td class="datetime textColorBlack">Mar 27, 2017 10:33:24 PM +03:00</td>
         <td class="centerjustify textColorBlack">

我想要的是自动浏览到href =“loadConfirmationDetails.htm?fId = 12047但fId部分是动态的,所以我不能将此href用作静态,但此href的单元格位置始终相同;它的静态部分是href="loadConfirmationDetails.htm?fId

这个A标签(包含想要的href)是页面上的第105个,我在想是否可以在PS中使用一些cellindex但我没有找到任何内容!

我试过这个但是没有用:

$ParsedHTML=(Invoke-WebRequest "https://uat.website.com/xxx/community/loadConfirmations.htm?initial=false&action=search").ParsedHtml | Where-Object {$_.TagName -eq 'a' } | Select-Object InnerHtml -First 105
$ParsedHTML.click()

可能因为这会选择所有105个第一个A标签,但我只想点击第105个。

我还想知道我可以使用$ie.Document.IHTMLDocument3_getElementById("row")管道来获取像孩子一样的东西以及选择第一个A标签或其他东西 - 但我无法弄清楚如何。

1 个答案:

答案 0 :(得分:0)

如果你知道它总是第105个&#34; A&#34;在页面上链接然后您应该能够从.Links属性获取它,如下所示:

$Web = Invoke-WebRequest "https://uat.website.com/xxx/community/loadConfirmations.htm?initial=false&action=search"  
$Link = $Web.Links[104].href

这是104因为数组从0开始。

如果它是页面上的第105个元素(例如所有HTML元素),那么您应该可以通过以下方式访问它:

$Web.AllElements[104]

此外,您应该注意Links集合没有&#34; Click&#34;您尝试使用的方法,但似乎可以通过此处所述的Internet Explorer COM对象实现:

Click a hyperlink using powershell

仅供参考我还在上一个问题上扩展了我的答案,其中包含了一些关于如何到达您想要的页面元素的其他选项:https://stackoverflow.com/a/43057670/2796058