节点v10.15.3(64位) up人v1.14.0 Chromium v 75.0.3738.0(开发人员内部版本)(64位)
我位于站点自动化工具的最后一页,Puppeteer无法找到我需要按下的最后一个按钮(实际上是具有“ id”属性的锚标签)。代码是:
await page2.click('#____bs');
我收到的错误是:
错误:节点不可见或不是HTMLElement
HTML代码在这里:
<a role="button" ct="Button" rel="tooltip" title="Post"
aria-label="Please Select Post" data-toggle="cso-button" id="____bq"
class="cso-btn cso-btn cso-action cso-corner cso-btn-primary "
href="javascript:void(0)"
data-ctl-options="{'actiontype';:'ACTION','value':'Click'}"
style="display: inline-block;">Post</a>
在调试模式下,此页面向上,我可以使用JQuery轻松查找元素:
$("#____bq").text()
"Post"
因此,木偶为何找不到它?我可以尝试单击此链接吗?
控件(锚点)是否也位于屏幕的可见边缘之外?我认为这并不重要,因为我假设Puppeteer是在看HTML,而不是看屏幕本身,但问问也没有问题。
谢谢。
更新:这是包含我要选择的锚点的整个HTML:
<div class="row split">
<div class="clsFP-expand clsBG-expand cso-hidden cso-cont-50r cso-pad5r">
<span class="cso-pad5-ie">
<a role="button" ct="Button" rel="tooltip" title="Cancel" aria-label="Please Select Cancel" data-toggle="cso-button" id="____bo" class="cso-btn cso-btn cso-action cso-corner cso-btn-grey " href="javascript:void(0)" data-ctl-options="{"actiontype":"ACTION","value":"Click"}" >Cancel</a>
</span>
<span class="cso-pad5-ie">
<a role="button" ct="Button" rel="tooltip" title="Post" aria-label="Please Select Post" data-toggle="cso-button" id="____bs" class="cso-btn cso-btn cso-action cso-corner cso-btn-primary inactive " href="javascript:void(0)" data-ctl-options="" >Post</a>
<a role="button" ct="Button" rel="tooltip" title="Post" aria-label="Please Select Post" data-toggle="cso-button" id="____bq" class="cso-btn cso-btn cso-action cso-corner cso-btn-primary " href="javascript:void(0)" data-ctl-options="{"actiontype":"ACTION","value":"Click"}" >Post</a>
</span>
</div>
</div>
答案 0 :(得分:0)
不是Puppeteer无法获得该元素。这是来自Puppeteer的验证(请参见https://github.com/GoogleChrome/puppeteer/blob/5ee21d97e796263857b9f3fbeaf63366179d346f/lib/JSHandle.js#L203)。
根据文档:
此方法使用选择器获取一个元素,如果需要,将其滚动到视图中,然后使用page.mouse单击该元素的中心。如果没有元素匹配选择器,则该方法将引发错误。
这意味着Chromium应该能够滚动到该元素,并且该元素应该是可见的以便能够单击它。