Just a summary of useful commands !
Query
query(uiquery, *args)
irb(main):003:0> query("button index:0") => [{"class"=>"UIRoundedRectButton", "frame"=>{"y"=>287, "width"=>72, "x"=>100, "height"=>37}, "UIType"=>"UIControl", "description"=>">"}]
irb(main):005:0> query("button index:0").first.keys => ["class", "frame", "UIType", "description"] irb(main):006:0> query("button index:0").first["frame"]["width"] => 72
irb(main):031:0> query("tableView","numberOfSections") => [1]
irb(main):033:0> query("tableView","delegate","description") => [""]
irb(main):034:0> query("tableView",numberOfRowsInSection:0) => [30]
irb(main):035:0> query("tableView","numberOfRowsInSection"=>0) => [30]
irb(main):036:0> query("pickerView",:delegate, [{pickerView:nil},{titleForRow:1},{forComponent:0}]) => ["1,0"]
[pickerView.delegate pickerView:nil titleForRow:1 forComponent:0]
classes(uiquery)
def classes(uiquery,*args) query_map(uiquery,:class,*args) end
irb(main):001:0> classes("view") => ["UILayoutContainerView", "UITransitionView", "UIViewControllerWrapperView", "UIView", "UITextField", "UITextFieldRoundedRectBackgroundView", "UIImageView", "UIImageView", "UIImageView", "UITextFieldLabel", "UILabel", "UIRoundedRectButton", "UIButtonLabel", "UISwitch", "_UISwitchInternalView", "UIImageView", "UIView", "UIImageView", "UIImageView", "UIImageView", "UIRoundedRectButton", "UIButtonLabel", "UITabBar", "UITabBarButton", "UITabBarSelectionIndicatorView", "UITabBarSwappableImageView", "UITabBarButtonLabel", "UITabBarButton", "UITabBarSwappableImageView", "UITabBarButtonLabel", "UITabBarButton", "UITabBarSwappableImageView", "UITabBarButtonLabel", "UITabBarButton", "UITabBarSwappableImageView", "UITabBarButtonLabel"]
label(uiquery)
def label(uiquery) query(uiquery, :accessibilityLabel) end
irb(main):001:0> label("view") [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "Empty list", nil, nil, nil, "Mon", "Dec 17", nil, nil, nil, "Tue", "Dec 18", nil, nil, nil, nil, "Today", nil, nil, nil, "Thu", "Dec 20", nil, nil, nil, nil, nil, "Empty list", nil, nil, "12", "12", nil, nil, "1", "1", nil, nil, "2", "2", nil, nil, "3", "3", nil, nil, nil, nil, nil, "Empty list", nil, nil, "56", "56", nil, nil, "57", "57", nil, nil, "58", "58", nil, nil, nil, nil, nil, "Empty list", nil, nil, "AM", "AM", nil, nil, "PM", "PM", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "Name", "First View", "First", "First", nil, "Second", "Second", nil, "other", "switch", nil, nil, nil, nil, nil, nil, "login", "Login", nil, "First", nil, nil, "First", "Second", nil, "Second", "Third", nil, "Third", "Fourth", nil, "Fourth"]
element_does_not_exist(uiquery)
element_exists(uiquery)
view_with_mark_exists(expected_mark)
element_exists("view marked:'#{expected_mark}'")
Waiting
wait_for(options, &block)
{:timeout => 10, #maximum number of seconds to wait :retry_frequency => 0.2, #wait this long before retrying the block :post_timeout => 0.1, #wait this long after the block returns true :timeout_message => "Timed out waiting...", #error message in case options[:timeout] is exceeded :screenshot_on_error => true # take a screenshot in case of error }
irb(main):030:0> wait_for(:timeout => 5) { not query("label text:'Cell 11'").empty? }
irb(main):031:0> wait_for(:timeout => 5) { element_exists("label text:'Cell 20'") }
wait_for(:timeout => 30) do res = query("button marked:'Player play icon'", :isSelected) res.first == "1" end
wait_for_elements_exist(elements_arr, options={})
irb(main):008:0> wait_for_elements_exist( ["label text:'Cell 11'", "tabBarButton marked:'Third'"], :timeout => 2)
wait_for_elements_do_not_exist(elements_arr, options={})
wait_for_none_animating(options={})
wait_poll(opts, &block)
{:until => nil #a predicate which should return true when the condition is satisfied :until_exists => nil #a uiquery to function as predicate (i.e. element_exists(opts[:until_exists])) :timeout => 10, #maximum number of seconds to wait :retry_frequency => 0.2, #wait this long before retrying the block :post_timeout => 0.1, #wait this long after the block returns true :timeout_message => "Timed out waiting...", #error message in case options[:timeout] is exceeded :screenshot_on_error => true # take a screenshot in case of error }
irb(main):023:0> wait_poll(:until_exists => "label text:'Cell 22'", :timeout => 20) do irb(main):024:1* scroll("tableView", :down) irb(main):025:1> end
Bye Guys π
Font:Β https://github.com/calabash/calabash-ios/wiki/03.5-Calabash-iOS-Ruby-API
One thought on “Summary of Calabash iOS Ruby API – QUERY”