gpt4 book ai didi

javascript - 如何让 casperjs 继续而不是异常退出?

转载 作者:行者123 更新时间:2023-11-28 00:29:20 26 4
gpt4 key购买 nike

当我使用 CasperJS 处理 Web 时,我发现了一个奇怪的情况。即使我使用 try-catch block ,程序也会因异常退出!我的代码如下。我希望程序可以继续运行下一个循环。但是,当找不到 iframe 时,会抛出类似 CasperError: Frame number "1"is out ofbounds. 的异常,并且整个程序退出。 catch block 中的 myStore 函数也未运行。

有人可以帮助我们吗?

try {
// find the iframe and then fill in the message
casper.withFrame(1, function() {
casper.evaluate(function(message) {
// some function code
});
casper.wait(1000, function() {
myStore(stores, index+1);
// when the iframe not found, function myStroe will not be run
});
});
} catch (err) {
output(false, "error=" + err.message);
myStore(stores, index+1); // myStroe will not be run on Exception
}

我尝试了 Artjom B 给出的示例,但它不起作用。

var frameExists = false;
casper.withFrame(1, function() {
frameExists = true;
casper.evaluate(function(message) {
// some function code
});
});
casper.wait(3000, function() {
if (frameExists) {
// the program run this branch and got stuck in the nonexistent selector since the frame is not found.
casper.click("input#send");
// some function code
output(true, "index=" + index + ";storeId=" + store.id + ";succeeded");
myStore(stores, index+1);
} else {
output(false, "index=" + index + ";storeId=" + store.id + ";error=" + err.message);
myStore(stores, index+1);
}
});

这很奇怪。我不知道为什么程序会运行到错误的分支,frameExists === true

最佳答案

有一个方便的小选项,名为 exitOnError :

开头:

var casper = require('casper').create({
exitOnError: false
});

或更高版本:

casper.options.exitOnError = false;
<小时/>

如果您希望无论框架是否存在都运行myStore(),您可以执行以下操作:

casper.then(function(){
var frameExists = false;
// find the iframe and then fill in the message
casper.withFrame(1, function() {
frameExists = true;
casper.evaluate(function(message) {
// some function code
});
casper.wait(1000, function() {
myStore(stores, index+1);
// when the iframe not found, function myStroe will not be run
});
});
casper.then(function(){
if (!frameExists) {
output(false, "error=" + err.message);
myStore(stores, index+1); // myStroe will not be run on Exception
}
});
});

关于javascript - 如何让 casperjs 继续而不是异常退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158204/

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