我在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