gpt4 book ai didi

javascript - Casperjs 减慢链接循环速度

转载 作者:行者123 更新时间:2023-12-03 06:21:26 25 4
gpt4 key购买 nike

我正在通过对我的网站进行测试来学习 CasperJS,该测试从导航栏中获取所有链接并循环打开它们并为每个页面运行一个小测试(检查标题,点击搜索按钮,请参阅如果结果返回等)。我还添加了一个“快速测试”标志,该标志只会在转到下一个链接之前检查页面标题。总共大约有 25 个链接。

问题是,在大约 10 次完整测试后,脚本不知何故卡住了,但在快速测试中运行良好。这是我用来打开每个页面的循环:

casper.each(linkList, function(self, link){
self.thenOpen(link, function(){
self.echo(link);
temp = Date.now();
this.open(urlPrefix + link);
this.then(function(){
temp = (Date.now()) - temp;
self.echo("Load time: "+temp.toString()+"ms");
switch(link){
//case statements for specific pages
// - run specialized versions of testPage()
case "Example":
testExample(this);
break;
default:
testPage(this);
break;
}
});
});
});

testPage() 和页面特定函数都类似于:

function testPage(ths){
checkTitle(ths, "Page Title");
if(quickTest)
return;

ths.click('#searchButton');

casper.waitForSelectorTextChange("#results",function(){
temp = ths.evaluate(function(){
return $("tr.row").length;
});
if(temp>0)
casper.echo("Results returned");
else
casper.echo("No results returned");
});
}

checkTitle() 函数只是一个简单的函数:

function checkTitle(ths, name){
temp = ths.getTitle();
casper.echo("Page Title: "+temp+" - App loads: "+(temp==name ? "PASSED" : "FAILURE"));
}

现在,如果 quickTesttrue 则循环结束,没有问题。如果 quickTestfalse,则循环无限期地卡在第 12 页上。巧合的是,第 11 页实际上是同一页面,只是搜索过滤器的选项更多。此外,我的 casperjs 脚本告诉我,使用 quickTest=false 加载页面需要 13410 毫秒,使用 quickTest=true 只需要 460 毫秒,这很令人困惑,因为两者之间没有代码时间戳会从该标志中跳过/添加,并且在 IE 中加载页面不会花费那么长时间。

为什么 casper 在循环链接后速度变慢?

最佳答案

我偶然发现了this page 。看来这个过程中的某个地方存在内存泄漏。虽然我仍然不熟悉 casperjs 和 phantomjs,但我猜它涉及循环中的 this.open() 位。我通过添加以下内容成功完成了所有测试:

casper.page.close();
casper.page = casper.newPage();

所以循环代码的开头现在看起来像:

casper.each(linkList, function(self, link){
self.thenOpen(link, function(){
self.echo(link);
casper.page.close();
casper.page = casper.newPage();
temp = Date.now();
this.open(urlPrefix + link);
......

关于javascript - Casperjs 减慢链接循环速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38858496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com