我必须使用 Nightmare 来编写一个爬虫。在其中一个链接上,网站使用 div 供用户导航离开页面。为了遵循导航流程,我希望我的 Nightmare 实例“单击”div。但是,当我在 chrome 上获取元素并调用 click 时,什么也没有发生。与 Firefox 不同的是,它运行良好。
脚本
let elem = document.getElementByClassName('is-a-div-element')[0];
elem.click()
在 Firefox 上工作正常,在 Chrome 上没有任何反应!有任何想法吗?导致问题的网站正在使用 React。不确定这是否有帮助。
HTML 结构如下所示。
<div class="nav-element">
<div class="is-a-div-element">
<div roll="button">
<span roll="presentation">Hello World</span>
<span class="Exit">Exit</span>
</div>
</div>
</div>
最佳答案
我不确定 Nightmare 与这个问题有什么关系,因为您提到了 Chrome 和 Firefox 并且似乎正在使用标准浏览器 Javascript,但无论如何我都会尝试回答。
既然您已经用更具体的信息编辑了您的问题,我将编辑我的答案。现在我看到的主要问题是您使用的是 getElementByClassName
,它不是一个函数(缺少 s
)。
这样做:
let elem = document.getElementsByClassName('is-a-div-element')[0];
在 Chrome 和 Firefox 中测试运行情况:
window.addEventListener('load', function() {
let elem = document.getElementsByClassName('is-a-div-element')[0];
elem.click();
});
<div class="nav-element">
<div class="is-a-div-element" onclick="alert('this was clicked frens');">
<div roll="button">
<span roll="presentation">Hello World</span>
<span class="Exit">Exit</span>
</div>
</div>
</div>
关于javascript - Firefox 点击和 chrome 点击有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793174/