웹 응용 프로그램에 로그인하여 시뮬레이션을 시작합니다. 즉, 일부 페이지를 방문하고 일부 값을 변경합니다.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 이상인 경우, 오류가 발생합니다 :
[TypeError : 'in'연산자를 사용하여 'compareDocumentPosition'을 (를) null로 검색 할 수 없습니다.
생성 된 브라우저 개체가 많으면 좀비가 관리 할 수없는 것처럼 보입니다. 좀비 라이브러리가 너무 느려서 많은 스레드에서 작동하지 않을 수 있습니까? Zombie.js를 사용하지 않고 node.js 만 사용하여 동일한 작업을 수행 할 수 있습니까? 아니면 내 스크립트의 일부가 Zombie.js와 함께 실행되도록 최적화되어야합니까?