我想登錄到Web應用程序並開始模擬 - 即訪問某些頁面並更改某些值。node.js zombie.js多個瀏覽器錯誤
我的代碼是:
var Browser = require("zombie");
fail = function (error) {console.log(error)}
function login(browser){
//console.log("login")
return browser.visit("http://example.com/login").then(function(){
browser.fill('input[name="email"]', '[email protected]')
browser.fill('input[name="password"]', 'example')
browser.pressButton("#login")
return browser.wait().then(function() {
return browser;
})
})
}
function simpleScenario(browser, id) {
//browser.wait().then(function() {
browser.visit("http://example.com/next_page")
.then(function() {
browser.wait(function() {
var n = 5;
var step = function() {
var period = 100 + n;
browser.evaluate("m.productvalue(" + period + ")");
if(n > 0) {
setTimeout(step, 1000);
}
n--;
};
step()
})
.fail(fail)
});
//});
}
function sampleScenario(id) {
var browser = new Browser({debug:false})
login(browser)
.then(function() {
console.log("logged in");
simpleScenario(browser, id);
})
.fail(fail);
}
function loadTest(numberOfThreads) {
for(i = 0; i < numberOfThreads; i++) {
sampleScenario(i)
}
}
loadTest(50);
我的問題是:當我在一個循環中執行一次我的功能,一切都OK了,但是當numberOfThreads是10個或更多,我得到一個錯誤:
[類型錯誤:不能使用「在」操作來搜索空「compareDocumentPosition」]
看來,如果有很多瀏覽器創建的對象,那麼殭屍不能管理它。 也許殭屍庫太慢,無法使用多線程?如果不使用Zombie.js,只能使用node.js,我可以做同樣的事情嗎?或者,也許我的腳本的某些部分需要優化以運行Zombie.js?