2

Mein Code, auf Meteor-Server genannt (für diejenigen, die Meteor nicht wissen, läuft es auf der Node.js) von einer Methode:Wie erhole ich mich von Selenium Fehler auf Meteor?

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) 
    }) 
} 

vertraut Diejenigen mit Meteor wissen, dass es normalerweise Meteor propagieren sollte .Error an den Client. Stattdessen fängt Selen meine Fehler und beendet mit Code 1, was zu einem Neustart des Servers:

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 

Es scheint, dass für mich erfolgreich auf Client-Fehlermeldung passieren, ich brauche Selen zu verhindern, dass der Fehler abfängt. Wie mache ich das?

+0

Gibt es eine Ausnahme, die Sie behandeln können? –

+0

Ja, aber ich muss Meteor.Error werfen, denn das führt dazu, dass Meteor die Ablehnung an den Client weitergibt. Problemumgehungen können gefunden werden, aber so werden normalerweise Fehler in Meteor behandelt. –

Antwort

0

2 Dinge hier los ich glaube:

1) der Anruf an den Treiber erhalten die Seite asynchron ist, so dass Sie wirklich diese in einen Meteor.wrapAsync() Anruf wickeln sollte.

2) Wenn Sie dies tun, würde ich denken, dass der Fehler synchron zum Rückgabewert des Anrufs gesendet wird. Oder Sie können es fangen und dort werfen Sie den Fehler als Meteor.error().

Verwandte Themen