Module: Calabash::Android::Operations
Defined Under Namespace
Classes: Device
Instance Method Summary
collapse
-
#app_to_background(secs) ⇒ Object
-
#backdoor(sel, arg) ⇒ Object
-
#cell_swipe(options = {}) ⇒ Object
-
#check_element_does_not_exist(query) ⇒ Object
-
#check_element_exists(query) ⇒ Object
-
#check_view_with_mark_exists(expected_mark) ⇒ Object
-
#clear_app_data ⇒ Object
-
#connect_to_test_server ⇒ Object
-
#default_device ⇒ Object
-
#disconnect_from_test_server ⇒ Object
-
#done ⇒ Object
-
#each_item(opts = {:query => "android.widget.ListView", :post_scroll => 0.2}, &block) ⇒ Object
-
#element_does_not_exist(uiquery) ⇒ Object
-
#element_exists(uiquery) ⇒ Object
-
#element_is_not_hidden(uiquery) ⇒ Object
a better name would be element_exists_and_is_not_hidden.
-
#fail(msg = "Error. Check log for details.", options = {:prefix => nil, :name => nil, :label => nil}) ⇒ Object
-
#html(q) ⇒ Object
-
#http(options, data = nil) ⇒ Object
-
#install_app(app_path) ⇒ Object
-
#interpolate(recording, options = {}) ⇒ Object
-
#label(uiquery) ⇒ Object
-
#load_playback_data(recording, options = {}) ⇒ Object
-
#log(message) ⇒ Object
-
#macro(txt) ⇒ Object
-
#make_http_request(url, req) ⇒ Object
-
#map(query, method_name, *method_args) ⇒ Object
-
#ni ⇒ Object
-
#performAction(action, *arguments) ⇒ Object
-
#pinch(in_out, options = {}) ⇒ Object
-
#playback(recording, options = {}) ⇒ Object
-
#query(uiquery, *args) ⇒ Object
-
#record_begin ⇒ Object
-
#record_end(file_name) ⇒ Object
-
#reinstall_apps ⇒ Object
-
#reinstall_test_server ⇒ Object
-
#rotate(dir) ⇒ Object
-
#screenshot(options = {:prefix => nil, :name => nil}) ⇒ Object
-
#screenshot_and_raise(msg) ⇒ Object
-
#screenshot_embed(options = {:prefix => nil, :name => nil, :label => nil}) ⇒ Object
-
#scroll(uiquery, direction) ⇒ Object
-
#scroll_to_row(uiquery, number) ⇒ Object
-
#set_default_device(device) ⇒ Object
-
#set_gps_coordinates(latitude, longitude) ⇒ Object
-
#set_gps_coordinates_from_location(location) ⇒ Object
-
#set_text(uiquery, txt) ⇒ Object
-
#shutdown_test_server ⇒ Object
-
#start_test_server_in_background(options = {}) ⇒ Object
-
#swipe(dir, options = {}) ⇒ Object
-
#touch(uiquery, *args) ⇒ Object
-
#uninstall_apps ⇒ Object
-
#url_for(verb) ⇒ Object
-
#view_with_mark_exists(expected_mark) ⇒ Object
-
#wake_up ⇒ Object
#tap
#handle_error_with_options, #wait_for, #wait_for_elements_do_not_exist, #wait_for_elements_exist, #wait_poll
Instance Method Details
#app_to_background(secs) ⇒ Object
492
493
494
|
# File 'lib/calabash-android/operations.rb', line 492
def app_to_background(secs)
ni
end
|
#backdoor(sel, arg) ⇒ Object
550
551
552
|
# File 'lib/calabash-android/operations.rb', line 550
def backdoor(sel, arg)
ni
end
|
#cell_swipe(options = {}) ⇒ Object
467
468
469
|
# File 'lib/calabash-android/operations.rb', line 467
def cell_swipe(options={})
ni
end
|
#check_element_does_not_exist(query) ⇒ Object
514
515
516
517
518
|
# File 'lib/calabash-android/operations.rb', line 514
def check_element_does_not_exist( query )
if element_exists( query )
screenshot_and_raise "Expected no elements to match query: #{query}"
end
end
|
#check_element_exists(query) ⇒ Object
508
509
510
511
512
|
# File 'lib/calabash-android/operations.rb', line 508
def check_element_exists( query )
if not element_exists( query )
screenshot_and_raise "No element found for query: #{query}"
end
end
|
#check_view_with_mark_exists(expected_mark) ⇒ Object
520
521
522
|
# File 'lib/calabash-android/operations.rb', line 520
def check_view_with_mark_exists(expected_mark)
check_element_exists( "view marked:'#{expected_mark}'" )
end
|
#clear_app_data ⇒ Object
70
71
72
|
# File 'lib/calabash-android/operations.rb', line 70
def clear_app_data
default_device.clear_app_data
end
|
#connect_to_test_server ⇒ Object
138
139
140
141
142
|
# File 'lib/calabash-android/operations.rb', line 138
def connect_to_test_server
puts "Explicit calls to connect_to_test_server should be removed."
puts "Please take a look in your hooks file for calls to this methods."
puts "(Hooks are stored in features/support)"
end
|
#default_device ⇒ Object
34
35
36
37
38
39
|
# File 'lib/calabash-android/operations.rb', line 34
def default_device
unless @default_device
@default_device = Device.new(self, ENV["ADB_DEVICE_ARG"], ENV["TEST_SERVER_PORT"], ENV["APP_PATH"], ENV["TEST_APP_PATH"])
end
@default_device
end
|
#disconnect_from_test_server ⇒ Object
144
145
146
147
148
|
# File 'lib/calabash-android/operations.rb', line 144
def disconnect_from_test_server
puts "Explicit calls to disconnect_from_test_server should be removed."
puts "Please take a look in your hooks file for calls to this methods."
puts "(Hooks are stored in features/support)"
end
|
#done ⇒ Object
471
472
473
|
# File 'lib/calabash-android/operations.rb', line 471
def done
ni
end
|
#each_item(opts = {:query => "android.widget.ListView", :post_scroll => 0.2}, &block) ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/calabash-android/operations.rb', line 115
def each_item(opts={:query => "android.widget.ListView", :post_scroll => 0.2}, &block)
uiquery = opts[:query] || "android.widget.ListView"
skip_if = opts[:skip_if] || lambda { |i| false }
stop_when = opts[:stop_when] || lambda { |i| false }
check_element_exists(uiquery)
num_items = query(opts[:query], :adapter, :count).first
num_items.times do |item|
next if skip_if.call(item)
break if stop_when.call(item)
scroll_to_row(opts[:query], item)
sleep(opts[:post_scroll]) if opts[:post_scroll] and opts[:post_scroll] > 0
yield(item)
end
end
|
#element_does_not_exist(uiquery) ⇒ Object
496
497
498
|
# File 'lib/calabash-android/operations.rb', line 496
def element_does_not_exist(uiquery)
query(uiquery).empty?
end
|
#element_exists(uiquery) ⇒ Object
500
501
502
|
# File 'lib/calabash-android/operations.rb', line 500
def element_exists(uiquery)
not element_does_not_exist(uiquery)
end
|
#element_is_not_hidden(uiquery) ⇒ Object
a better name would be element_exists_and_is_not_hidden
525
526
527
|
# File 'lib/calabash-android/operations.rb', line 525
def element_is_not_hidden(uiquery)
ni
end
|
#fail(msg = "Error. Check log for details.", options = {:prefix => nil, :name => nil, :label => nil}) ⇒ Object
91
92
93
|
# File 'lib/calabash-android/operations.rb', line 91
def fail(msg="Error. Check log for details.", options={:prefix => nil, :name => nil, :label => nil})
screenshot_and_raise(msg, options)
end
|
#html(q) ⇒ Object
446
447
448
|
# File 'lib/calabash-android/operations.rb', line 446
def html(q)
query(q).map {|e| e['html']}
end
|
#http(options, data = nil) ⇒ Object
442
443
444
|
# File 'lib/calabash-android/operations.rb', line 442
def http(options, data=nil)
default_device.http(options, data)
end
|
#install_app(app_path) ⇒ Object
57
58
59
|
# File 'lib/calabash-android/operations.rb', line 57
def install_app(app_path)
default_device.install_app(app_path)
end
|
#interpolate(recording, options = {}) ⇒ Object
538
539
540
|
# File 'lib/calabash-android/operations.rb', line 538
def interpolate(recording, options={})
ni
end
|
#label(uiquery) ⇒ Object
415
416
417
|
# File 'lib/calabash-android/operations.rb', line 415
def label(uiquery)
ni
end
|
#load_playback_data(recording, options = {}) ⇒ Object
530
531
532
|
# File 'lib/calabash-android/operations.rb', line 530
def load_playback_data(recording,options={})
ni
end
|
#log(message) ⇒ Object
22
23
24
|
# File 'lib/calabash-android/operations.rb', line 22
def log(message)
$stdout.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")} - #{message}" if (ARGV.include? "-v" or ARGV.include? "--verbose")
end
|
#macro(txt) ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/calabash-android/operations.rb', line 26
def macro(txt)
if self.respond_to?(:step)
step(txt)
else
Then(txt)
end
end
|
#make_http_request(url, req) ⇒ Object
573
574
575
|
# File 'lib/calabash-android/operations.rb', line 573
def make_http_request( url, req )
ni
end
|
#map(query, method_name, *method_args) ⇒ Object
554
555
556
557
558
559
560
561
562
563
564
565
566
567
|
# File 'lib/calabash-android/operations.rb', line 554
def map(query, method_name, *method_args)
operation_map = {
:method_name => method_name,
:arguments => method_args
}
res = http("/map",
{:query => query, :operation => operation_map})
res = JSON.parse(res)
if res['outcome'] != 'SUCCESS'
screenshot_and_raise "map #{query}, #{method_name} failed because: #{res['reason']}\n#{res['details']}"
end
res['results']
end
|
#ni ⇒ Object
131
132
133
|
# File 'lib/calabash-android/operations.rb', line 131
def ni
raise "Not yet implemented."
end
|
45
46
47
|
# File 'lib/calabash-android/operations.rb', line 45
def performAction(action, *arguments)
default_device.perform_action(action, *arguments)
end
|
#pinch(in_out, options = {}) ⇒ Object
484
485
486
|
# File 'lib/calabash-android/operations.rb', line 484
def pinch(in_out,options={})
ni
end
|
#playback(recording, options = {}) ⇒ Object
534
535
536
|
# File 'lib/calabash-android/operations.rb', line 534
def playback(recording, options={})
ni
end
|
#query(uiquery, *args) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/calabash-android/operations.rb', line 103
def query(uiquery, *args)
converted_args = []
args.each do |arg|
if arg.is_a?(Hash) and arg.count == 1
converted_args << {:method_name => arg.keys.first, :arguments => [ arg.values.first ]}
else
converted_args << arg
end
end
map(uiquery,:query,*converted_args)
end
|
#record_begin ⇒ Object
542
543
544
|
# File 'lib/calabash-android/operations.rb', line 542
def record_begin
ni
end
|
#record_end(file_name) ⇒ Object
546
547
548
|
# File 'lib/calabash-android/operations.rb', line 546
def record_end(file_name)
ni
end
|
#reinstall_apps ⇒ Object
49
50
51
|
# File 'lib/calabash-android/operations.rb', line 49
def reinstall_apps
default_device.reinstall_apps
end
|
#reinstall_test_server ⇒ Object
53
54
55
|
# File 'lib/calabash-android/operations.rb', line 53
def reinstall_test_server
default_device.reinstall_test_server
end
|
#rotate(dir) ⇒ Object
488
489
490
|
# File 'lib/calabash-android/operations.rb', line 488
def rotate(dir)
ni
end
|
#screenshot(options = {:prefix => nil, :name => nil}) ⇒ Object
87
88
89
|
# File 'lib/calabash-android/operations.rb', line 87
def screenshot(options={:prefix => nil, :name => nil})
default_device.screenshot(options)
end
|
#screenshot_and_raise(msg) ⇒ Object
419
420
421
422
|
# File 'lib/calabash-android/operations.rb', line 419
def screenshot_and_raise(msg)
screenshot_embed
raise(msg)
end
|
#screenshot_embed(options = {:prefix => nil, :name => nil, :label => nil}) ⇒ Object
82
83
84
85
|
# File 'lib/calabash-android/operations.rb', line 82
def screenshot_embed(options={:prefix => nil, :name => nil, :label => nil})
path = default_device.screenshot(options)
embed(path, "image/png", options[:label] || File.basename(path))
end
|
475
476
477
|
# File 'lib/calabash-android/operations.rb', line 475
def scroll(uiquery,direction)
ni
end
|
479
480
481
482
|
# File 'lib/calabash-android/operations.rb', line 479
def scroll_to_row(uiquery,number)
query(uiquery, {:smoothScrollToPosition => number})
puts "TODO:detect end of scroll - use sleep for now"
end
|
#set_default_device(device) ⇒ Object
41
42
43
|
# File 'lib/calabash-android/operations.rb', line 41
def set_default_device(device)
@default_device = device
end
|
#set_gps_coordinates(latitude, longitude) ⇒ Object
99
100
101
|
# File 'lib/calabash-android/operations.rb', line 99
def set_gps_coordinates(latitude, longitude)
default_device.set_gps_coordinates(latitude, longitude)
end
|
#set_gps_coordinates_from_location(location) ⇒ Object
95
96
97
|
# File 'lib/calabash-android/operations.rb', line 95
def set_gps_coordinates_from_location(location)
default_device.set_gps_coordinates_from_location(location)
end
|
#set_text(uiquery, txt) ⇒ Object
450
451
452
453
454
455
456
457
458
459
460
|
# File 'lib/calabash-android/operations.rb', line 450
def set_text(uiquery, txt)
raise "Currently queries are only supported for webviews" unless uiquery.start_with? "webView"
uiquery.slice!(0, "webView".length)
if uiquery =~ /(css|xpath):\s*(.*)/
r = performAction("set_text", $1, $2, txt)
JSON.parse(r["message"])
else
raise "Invalid query #{uiquery}"
end
end
|
#shutdown_test_server ⇒ Object
78
79
80
|
# File 'lib/calabash-android/operations.rb', line 78
def shutdown_test_server
default_device.shutdown_test_server
end
|
#start_test_server_in_background(options = {}) ⇒ Object
74
75
76
|
# File 'lib/calabash-android/operations.rb', line 74
def start_test_server_in_background(options={})
default_device.start_test_server_in_background()
end
|
#swipe(dir, options = {}) ⇒ Object
463
464
465
|
# File 'lib/calabash-android/operations.rb', line 463
def swipe(dir,options={})
ni
end
|
#touch(uiquery, *args) ⇒ Object
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
|
# File 'lib/calabash-android/operations.rb', line 424
def touch(uiquery,*args)
raise "Cannot touch nil" unless uiquery
if uiquery.instance_of? String
elements = query(uiquery, *args)
raise "No elements found. Query: #{uiquery}" if elements.empty?
element = elements.first
else
element = uiquery
element = element.first if element.instance_of?(Array)
end
center_x = element["rect"]["center_x"]
center_y = element["rect"]["center_y"]
performAction("touch_coordinate", center_x, center_y)
end
|
#uninstall_apps ⇒ Object
61
62
63
64
|
# File 'lib/calabash-android/operations.rb', line 61
def uninstall_apps
default_device.uninstall_app("sh.calaba.android.test")
default_device.uninstall_app(ENV["PACKAGE_NAME"])
end
|
#url_for(verb) ⇒ Object
569
570
571
|
# File 'lib/calabash-android/operations.rb', line 569
def url_for( verb )
ni
end
|
#view_with_mark_exists(expected_mark) ⇒ Object
504
505
506
|
# File 'lib/calabash-android/operations.rb', line 504
def view_with_mark_exists(expected_mark)
element_exists( "android.view.View marked:'#{expected_mark}'" )
end
|
#wake_up ⇒ Object
66
67
68
|
# File 'lib/calabash-android/operations.rb', line 66
def wake_up
default_device.wake_up()
end
|