3

Jenkins、Genymotion、calabash-android のテクノロジで構成されるテスト環境に取り組んでいます。ionic を使用して、単純な todo アプリを作成しました。実際、これはこのガイド ( http://ionicframework.com/docs/guide/installation.html ) の一部として見つかったものです。次に、このアプリをテストするために、calabash_android の簡単な機能とそれに付随する手順を作成しました。

機能ファイル:

Feature: Todo's & Projects
      Scenario: I can create a new todo under a project
        Given I wait for 5 seconds
        When I press button with id "new__task"
        Then I see field with id "#input__text"
        Then I enter text "This is a test" into input with id "#input__text"
        When I press button with id2 "create__task"
        Then I see id "task__1"
        Then I take a screenshot

      Scenario: I can create a new project
        Given I wait for 5 seconds
        When I swipe left
        Then I see button with id "#new__project"

手順:

require 'calabash-android/calabash_steps'
When(/^I press button with id "(.*?)"$/) do |buttonid|
       query("CordovaWebView css:'#new__task'")
       touch("CordovaWebView css:'#new__task'")
end
Then(/^I see field with id "(.*?)"$/) do |fieldid|
    query("CordovaWebView css:'#input__text'")
end
Then(/^I enter text "(.*?)" into input with id "(.*?)"$/) do |text, fieldid|
    query("CordovaWebView css:'#input__text'")
    enter_text("CordovaWebView css:'#input__text'", "This is a test")
end
When(/^I press button with id2 "(.*?)"$/) do |buttonid|
    query("CordovaWebView css:'#create__task'")
    touch("CordovaWebView css:'#create__task'")
end
Then(/^I see id "(.*?)"$/) do |fieldid|
    query("CordovaWebView css:'#task__1'")
end
Then(/^I see button with id "(.*?)"$/) do |buttonid|
       query("CordovaWebView css:'#new__project'")
       touch("CordovaWebView css:'#new__project'")
end

これを実行すると、成功します。すべてのステップに合格し、両方のシナリオに合格し、すべてが順調です。

次に、「ionic browser add crosswalk」を使用して横断歩道を追加すると、いくつかの問題が発生します。

「CordovaWebView」が存在しないため、私が書いたこれらの手順は機能しなくなります。crosswalk は独自のビューにすべてを埋め込むため、これを期待しています。

問題は、そのビューを照会できないことです。calabash-android コンソールで新しい crosswalk'd アプリを起動すると、"query(" ")" を実行できます。これは約 9 つの異なるビューを示しており、興味深いのは "XWalkCordovaView" です。ただし、ステップの「CordovaWebView」を「XWalkCordovaView」に置き換えても、ステップは失敗します。実際、次のように XWalkCordovaView にクエリを実行すると、 "query("XWalkCordovaView css:' '") は何も得られませんが、横断歩道以外のアプリで CordovaWebView を使用してこれを行うと、ページ上のすべての css 要素が取得されます (期待どおり)。

アプリを実際にテストすることはできません/できません/。しかし、最適化と x86 アーキテクチャでのテスト機能のためには横断歩道が必要です。

では...どうすれば CrosswalkCordova ビュー内の要素を正常にクエリして操作できるのでしょうか? 私は正しい場所を見ていますか?誰も知らないようです。私は何度もグーグル検索しましたが、一番上の結果は常に、クロスウォークが「ネイティブ」にサポートされているかどうかを尋ねる github ユーザーです (サポートされていません)。

どんな助けでも大歓迎です。

4

2 に答える 2

0

私は Cordova スタックに精通していませんが、Calabash Android を担当している同僚 @ Xamarin と話していました。

関連する GitHub の問題からの抜粋を次に示します。横断歩道サポート #507

ウィジェットを調べると、次の結果が得られました。

irb(main):006:0> query "org.apache.cordova.CordovaWebView", :getClass
[
    [0] "org.apache.cordova.CordovaWebView"
]
irb(main):007:0> query "org.apache.cordova.CordovaWebView", :getClass, :getSuperclass
[
    [0] "org.xwalk.core.XWalkView"
]
irb(main):008:0> query "org.apache.cordova.CordovaWebView", :getClass, :getSuperclass, :getSuperclass
[
    [0] "android.widget.FrameLayout"
]

ウィジェットはフォーム android.webkit.WebView を継承していないため、有効な WebView として認識されていないことがわかります。今のところ、これを回避する予定はありません。プル リクエストはいつでも歓迎します。

于 2015-01-28T15:11:19.100 に答える
0

Calabash-Android 0.5.6 (本日リリース) では横断歩道のサポートが導入されました。Calabash-Android を更新すると、クエリが有効になるはずです。

于 2015-02-09T17:16:21.777 に答える