Web 抓取 IE 中跨度标记名称中的多个编辑按钮

Web scrape multiple Edit buttons within Span Tag Names in IE

提问人:PJB 提问时间:7/3/2023 最后编辑:CommunityPJB 更新时间:9/13/2023 访问量:64

问:

我想从内部网站自动执行流程。我无法下载 selenium 或任何其他外部应用程序(github 被阻止)。

我运行报告并审核从几个供应商输入的信息。

我正在尝试自动单击 ric 网格中的三个编辑按钮。我能找到的唯一独特特征是 onclick 命令中包含的网格中的特定单元格。

<a id="idf3" href="#" onclick="Ricola.page.showPleaseWait('Loading ...'); var wcall=wicketAjaxGet('?wicket:interface=:3:gridCheckGroup:ricGridContainer:ricGrid:rows:1:cells:15:cell:editLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('idf3') != null;}.bind(this));return !wcall;"><span>Edit</span></a><span>/</span>

 

<a id="idf4" href="#" onclick="var wcall=wicketAjaxGet('?wicket:interface=:3: gridCheckGroup:ricGridContainer:ricGrid:rows:1:cells:15:cell:deleteLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('idf4') != null;}.bind(this));return !wcall;"><span>Delete</span></a>

 

<a id="idfd" href="#" onclick="Ricola.page.showPleaseWait('Loading...'); var wcall=wicketAjaxGet('?wicket:interface=:3: gridCheckGroup:ricGridContainer:ricGrid:rows:2:cells:15:cell:editLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('idfd') != null;}.bind(this));return !wcall;"><span>Edit</span></a><span>/</span>

 

<a id="idfe" href="#" onclick="var wcall=wicketAjaxGet('?wicket:interface=:3: gridCheckGroup:ricGridContainer:ricGrid:rows:2:cells:15:cell:deleteLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('idfe') != null;}.bind(this));return !wcall;"><span>Delete</span></a>

 

<a id="id107" href="#" onclick="Ricola.page.showPleaseWait('Loading...'); var wcall=wicketAjaxGet('?wicket:interface=:3: gridCheckGroup:ricGridContainer:ricGrid:rows:3:cells:15:cell:editLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('id107') != null;}.bind(this));return !wcall;"><span>Edit</span></a><span>/</span>

 

<a id="id108" href="#" onclick="var wcall=wicketAjaxGet('?wicket:interface=:3: gridCheckGroup:ricGridContainer:ricGrid:rows:3:cells:15:cell:deleteLink::IBehaviorListener:0:',null,null, function() {return Wicket.$('id108') != null;}.bind(this));return !wcall;"><span>Delete</span></a>

上面的代码出现在网站上,如下所示:

编辑/删除单元格中的链接
enter image description here

在某些记录中,只有一个“编辑”按钮,而其他记录可能最多有八个。这些将是页面上的唯一元素。<span>Edit</span>

我可以使用以下代码单击第一个“编辑”按钮:

'Click the Edit Button

Dim edButton As Object

Application.Wait (Now + TimeSerial(0, 0, 1))

Set edButton = htmlDoc.getElementsByTagName("span")

For Each e In edButton
    If e.innerText = "Edit" Then
        e.Click
        Exit For
    End If
Next e

我不确定如何循环它,因为从我所读到的内容来看,innertext 无法索引,因为它不是一个对象。

然后我尝试:

'Click the Edit Button
Dim edButton As Object

Set edButton = htmlDoc.querySelectorAll("[span=Edit]").click

这给了我

运行时错误“-2147352319 (80020101)”:自动化错误。

我发现除了 Ajax 之外,似乎没有一种情况可以对语法挑剔。

我确实有 Microsoft HTML 对象库、Microsoft Internet 控件、Microsoft XML、v6.0、Microsoft 脚本控件 1.0 和 Microsoft 脚本运行时用于添加参考。

理想情况下,我想将“编辑”按钮作为一个自动化过程循环,因为手动单击它们可能很耗时。同样,无法知道是只有一个编辑链接还是最多八个。

Ajax VBA 网页抓取 Internet-Explorer Innertext

评论


答: 暂无答案