3

我正在开发一个包含以下技术的测试环境:Jenkins、Genymotion 和calabash-android。使用 ionic,我构建了一个简单的待办事项应用程序 - 事实上,它是本指南 ( 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

当我运行它时,它成功了。所有步骤都通过了,两种情况都通过了,一切都很好。

如果我然后使用“离子浏览器添加人行横道”添加人行横道,我会遇到一些问题。

我编写的这些步骤停止工作,因为“CordovaWebView”不再存在。我期待这一点,因为人行横道将一切都嵌入到它自己的视图中。

问题是我无法查询该视图。当我使用 calabash-android 控制台启动新的 crosswalk'd 应用程序时,我可以“查询(” “)” - 这显示了大约 9 个不同的视图,其中一个感兴趣的是“XWalkCordovaView”。但是,如果我随后将步骤中的“CordovaWebView”替换为“XWalkCordovaView” - 步骤仍然失败。事实上,像这样查询 XWalkCordovaView:"query("XWalkCordovaView css:' '") 什么也没给我,而如果我在 noncrosswalk 应用程序中使用 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 回答