我在Windows 8.1上使用PhantomJS 1.9.7,我将在输入用户名和密码后点击登录按钮。我可以写用户名和密码,但是当我想让PhantomJS点击按钮时,它可以找到该元素,但无法点击该元素。 我在之前的文章中发现我需要创建事件并使用“dispatchEvent”。我这样做,但我如下得到了一个错误:PhantomJS无法点击现有元素
TypeError: 'undefined' is not a function (evaluating 'elm.dispatchEvent(event)')
我也试图从事件监听得到帮助,但我得到了同样的错误了点。
我怎样才能点击一个元素?
var page = require('webpage').create();
page.open('URL', function() {
var submitButton = enterUserAndPassAndLogin();
click(submitButton);
phantom.exit();
});
function enterUserAndPassAndLogin() {
var element = page.evaluate(function() {
document.querySelector('input[name="username"]').value = "*******";
document.querySelector('input[name="password"]').value = "*******";
return document.getElementsByTagName("Button");
});
return element;
}
function click(elm) {
var event = document.createEvent("MouseEvent");
event.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
elm.dispatchEvent(event);
}
你会写你使用点击按钮的代码? –
@cracker:请不要使用[内嵌代码跨度突出显示单词](http://meta.stackexchange.com/questions/135112/inline-code-spans-should-not-be-used-for-emphasis-正确) - 往往没有必要,如果真的需要强调,请[使用粗体或斜体](http://www.etf.europa.eu/authorssite.nsf/Pages/Use%20of%20bold%20and%20italics )代替。内联代码跨度仅用于语句中的代码(顾名思义):编辑帖子时请记住这一点。 –
当然,谢谢我下次会照顾 – cracker