Calabash實戰問題總結

  • 2016.3.23更新:多個工程依賴報錯處理

之前在團隊實施過 Calabash-Cucumber 自動化測試,最近項目又在使用。其中遇到一些問題,在此總結。

設置執行案例的模擬器

Cucumber 有一個配置文件,在執行 Cucumber 運行案例時,首先會調用此文件。

在Cucumber執行的目錄,即 features 目錄同級,建一個.config(隱藏文件,在終端裏使用命令)目錄。config目錄下,新建一個 Cucumber.yml文件 將如下內容copy 至此文件保存:

default: -r features -r features_ios_support --tags ~@wip --tags ~@manual --tags ~@ignore --tags ~@stg --tags ~@android_only DEVICE_TARGET='iPhone 6 (8.1 Simulator)'
  • -r:加載目錄 可以指定加載順序,ruby 特性後加載的類的方法會將先加載的覆蓋
  • –tags:可以給指定案例添加 tag 執行時,只執行選定 tag
  • DEVICE_TARGET:指定使用哪個版本的模擬器運行案例,如果是真機直接寫 DeviceID

可以使用如下命令查看本機設備列表:

➜  ~  instruments -s devices
    Known Devices:
    Rigel.Xu (8.4) [cac0899307dfb6f6bec507fcad641fe6b76ca3c9]
    iPad Retina (8.4 Simulator) [ACFDE3E0-85F8-4DC3-A6A5-7537769F0CE3]
    iPhone 6 (8.1 Simulator) [11CA78D9-395D-4FBE-9347-6B3CC20B75AC]
    iPhone 6 Plus (8.4 Simulator) [85C3A98F-BDBB-4BBF-A485-D2301E4ED5BA]

多個.xcodeproj依賴

有的工程可能會直接把其它工程做爲一個庫導入進來, 這時運行cucumber時就會報如下錯誤:

 Found multiple .xcodeproj directories:
  /Users/xxx/AAA.xcodeproj
  /Users/xxx/BBB.xcodeproj
  Which project contains the target of the application you are trying to test?
  Set the XCODEPROJ variable to specify the correct .xcodeproj directory.
  # Examples
  $ XCODEPROJ="../MyApp.xcodeproj" cucumber
  $ XCODEPROJ="iOS/MyApp.xcodeproj" cucumber
   (RunLoop::MultipleXcodeprojError)
  ./features/support/01_launch.rb:28:in `Before'

這是因爲cucumber檢測到在工程目錄下有兩個工程文件 , 這時也需要修改.yml 文件, 在每個設置的後面添加XCODEPROJ字段, 指定你需要測試的工程:

    XCODEPROJ="../你的工程.xcodeproj"

或者,在每次執行cucumber的時候, 帶上XCODEPROJ參數:

    XCODEPROJ="你的工程.xcodeproj" cucumber

webView操作及滾動

使用scoll(“webView”) 是無法滾動 webView 的,在 Calabash 的 GoogleGroup 裏查到可以使用 swipe 來滾動,親測可用swipe :up, offset:{x:100,y:250}外 webView 操作某一元素可以使用如下方式:

touch("webView css:'img#banner1'")

css之後是 css 的選擇器,爲使我們的測試腳本寫起來方便,建議在web 頁面開發的時間爲不同的控件使用不同的 id 。

查看 Calabash 源碼

安裝完 Calabash-Cucumber 後,可以在對應 ruby 的 gems 裏找到相應版本的 Calabash-Cucumber,如:

ruby-2.2.2/gems/Calabash-Cucumber-0.14.3

使用編輯器打開整個目錄,可以看到如下結構:

bin
doc
dylibs
features
features-skeleton
lib
LICENSE
scripts
staticlib

Calabash 的所有東西,都在這裏了,核心源碼在 lib/Calabash-Cucumber 目錄下,有時如果不知道一些命令,或者查不到解決方法,可以直接看源碼。

附:

Calabash官網

Google Group

Calabash-iOS Wiki

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章