如何单击PhantomJS中的元素?
page.evaluate(function() {
document.getElementById('idButtonSpan').click();
});
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误"未定义不是一个函数......"
如果我改为
return document.getElementById('idButtonSpan');
Run Code Online (Sandbox Code Playgroud)
然后打印出来,
然后它打印[object object],因此元素确实存在.
该元素充当按钮,但它实际上只是一个span元素,而不是提交输入.
我能够点击这个按钮点击Casper,但Casper有其他限制,所以我回到了PhantomJS.
我试图模仿用户点击我无法控制的代码的网站.我尝试与div作为按钮的元素.
<div role="button" class="c-T-S a-b a-b-B a-b-Ma oU v2" aria-disabled="false" style="-webkit-user-select: none;" tabindex="0">
Generate
</div>
Run Code Online (Sandbox Code Playgroud)
与元素关联的事件监听器(根据Chrome的检查员)是:

而我只是试图点击按钮使用:
var button = $('.c-T-S.a-b.a-b-B.a-b-Ma.oU.v2')
button.click()
Run Code Online (Sandbox Code Playgroud)
......但没有任何反应.选择器有效,经过验证:
alert($('.c-T-S.a-b.a-b-B.a-b-Ma.oU.v2').length); // alerts "1"
Run Code Online (Sandbox Code Playgroud)
我尝试过所有事件处理程序的排列
button.trigger('click');
button.mouseover().mousedown().mouseup()
button.trigger('mouseover', function() { button.trigger('mousedown', function() { button.trigger('mouseup'); }); });
Run Code Online (Sandbox Code Playgroud)
......但仍然没有.如何模拟此div的点击?
如果不清楚,我试图模拟这个div上的单击并触发原始函数,而不是在元素上定义新的单击函数.
UPDATE
其中许多答案确实单击了按钮,但不会产生与手动单击按钮相同的结果.所以问题似乎不一定是点击按钮本身,而是模仿真正的点击.