gpt4 book ai didi

node.js - 如何从 Meteor 上的 Selenium 错误中恢复?

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:07 24 4
gpt4 key购买 nike

我的代码,从一个方法调用 Meteor 服务器(对于那些不了解 Meteor 的人来说,它运行在 Node.js 之上):

var webdriver = require('selenium-webdriver')

function getPage(page) {

driver = driver || new webdriver.Builder().forBrowser('chrome').build();

driver.get(page).catch(function(error){
throw new Meteor.Error("Can't get page " + page)
})
}

熟悉 Meteor 的人都知道它通常应该将 Meteor.Error 传播到客户端。相反,Selenium 捕获了我的错误并以代码 1 退出,导致服务器重新启动:

W20160712-12:49:40.093(-7)? (STDERR) 
W20160712-12:49:40.104(-7)? (STDERR) /Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:654
W20160712-12:49:40.104(-7)? (STDERR) throw error;
W20160712-12:49:40.105(-7)? (STDERR) ^
W20160712-12:49:40.105(-7)? (STDERR) Error: [Can't get page i]
W20160712-12:49:40.118(-7)? (STDERR) at imports/somethingSel.js:35:15
W20160712-12:49:40.120(-7)? (STDERR) at ManagedPromise.invokeCallback_ (/Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:1379:14)
W20160712-12:49:40.121(-7)? (STDERR) at TaskQueue.execute_ (/Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:2913:14)
W20160712-12:49:40.123(-7)? (STDERR) at TaskQueue.executeNext_ (/Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:2896:21)
W20160712-12:49:40.124(-7)? (STDERR) at /Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:2775:27
W20160712-12:49:40.132(-7)? (STDERR) at /Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:639:7
W20160712-12:49:40.134(-7)? (STDERR) at /Users/irinaapex/.meteor/packages/promise/.0.8.3-beta.9.1fbal0n++os+web.browser+web.cordova/npm/node_modules/meteor-promise/fiber_pool.js:32:39
=> Exited with code: 1
W20160712-12:49:53.217(-7)? (STDERR) Debugger listening on port 49906
=> Meteor server restarted

看来,为了成功地将错误消息传递给客户端,我需要防止 Selenium 拦截错误。我该怎么做?

最佳答案

我相信这里发生了两件事:

1) 对驱动程序获取页面的调用是异步的,因此您应该将其包装到 Meteor.wrapAsync() 调用中。

2)如果你这样做,我认为错误将同步发送到调用的返回值。或者您可以捕获它,然后将错误重新抛出为 Meteor.error()

关于node.js - 如何从 Meteor 上的 Selenium 错误中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38337839/

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