2017-05-04 31 views
1

appium + nodejs(wd)+ mochaを使用しているときに問題が発生しました。ローディングビュー(blackbox testing &私はアンドロイドアプリの開発者ではありません)私はそれが不平等であるのを待っていたい。その後、nodejs appiumスタンドアロンのコンソール出力でハングアップを開始しますので、要素が見つからない場合、appium nodejs(wd)がハングします

wd.addPromiseChainMethod('waitForElementByIdDisappears', function (id, retries) { 
    var self = this; 
    return new Promise(function (resolve, reject) { 
     (function waitForElementDisappears(retry, context){ 
      if(retry < 0) { 
       return reject(); 
      } 
      else { 
       try { 
       context.elementByIdIfExists(id, function(err, element) { 
        console.log('Element found: ' + element + ' retry: ' + retry); 
        if(typeof element === 'undefined') { 
        return resolve(); 
        } 
        else { 
        setTimeout(() => waitForElementDisappears(retry-1, context), 1000); 
        }     
       }); 
       } 
       catch (error) { 
       console.log(error); 
       return reject(); 
       } 
      } 
     })(retries, self); 
    }); 
}); 

すべてのロードビューdisapearsまで正常に動作します::だから私はこのような何かを試してみました

情報:[デバッグ] [ブートストラップ] [デバッグ]を使用して:UiSelector [RESOURCE_ID = de.myapp.foo:id/loadingView] info:[デバッグ] [デバッグ] [BOOTSTRAP] [デバッグ]要素[]はnullです:(0)

がタイムアウトするまで何度も何度も繰り返します。

私も試してみました:

hasElementById(value, cb) -> cb(err, boolean)

elementByIdOrNull(value, cb) -> cb(err, element)

elementsById(value, cb) -> cb(err, element) (空要素のリストをチェック)

など他の構文の方法:

context.elementByIdIfExists(id).then(element => { ... })

しかし、毎回私の出力何かのようだった:&ヘルプを読み取るための

Element found: 15 retry: 30 
Element found: 15 retry: 29 
Element found: 15 retry: 28 
Element found: 15 retry: 27 

# hangs because the loading view was disappeared and appium standalone starts to repeat the [debug][info] section above ... 

ありがとう!

答えて

0

以前はappiumスタンドアロンを使用していましたが、最新のnpm appiumバージョン1.6.xに変更されました。最後に、私のメソッドの前に.setImplicitWaitTimeout(250)の設定を行い、そのメソッドをリセットしてからリセットしました。

関連する問題