appium_lib_core 3.2.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -51,15 +51,15 @@ module Appium
51
51
  @bridge.dialect
52
52
  end
53
53
 
54
- # Update `server_url` and HTTP clients following this arguments, protocol, host, port and path.
55
- # After this method, `@bridge.http` will be a new instance following them instead of `server_url` which is
54
+ # Update +server_url+ and HTTP clients following this arguments, protocol, host, port and path.
55
+ # After this method, +@bridge.http+ will be a new instance following them instead of +server_url+ which is
56
56
  # set before creating session.
57
57
  #
58
58
  # @example
59
59
  #
60
- # driver = core.start_driver server_url: 'http://example1.com:8000/wd/hub # @bridge.http is for `http://example1.com:8000/wd/hub/`
60
+ # driver = core.start_driver server_url: 'http://example1.com:8000/wd/hub # @bridge.http is for 'http://example1.com:8000/wd/hub/'
61
61
  # driver.update_sending_request_to protocol: 'https', host: 'example2.com', port: 9000, path: '/wd/hub'
62
- # driver.manage.timeouts.implicit_wait = 10 # @bridge.http is for `https://example2.com:9000/wd/hub/`
62
+ # driver.manage.timeouts.implicit_wait = 10 # @bridge.http is for 'https://example2.com:9000/wd/hub/'
63
63
  #
64
64
  def update_sending_request_to(protocol:, host:, port:, path:)
65
65
  @bridge.http.update_sending_request_to(scheme: protocol,
@@ -110,7 +110,7 @@ module Appium
110
110
  # Defaults to 'Done' for iOS(except for XCUITest).
111
111
  # @param [Symbol] strategy The symbol of the strategy which closes the keyboard.
112
112
  # XCUITest ignore this argument.
113
- # Default for iOS is `:pressKey`. Default for Android is `:tapOutside`.
113
+ # Default for iOS is +:pressKey+. Default for Android is +:tapOutside+.
114
114
  #
115
115
  # @example
116
116
  #
@@ -312,13 +312,13 @@ module Appium
312
312
  #
313
313
  # result = @driver.within_context('NATIVE_APP') do
314
314
  # @driver.find_element :tag, "button"
315
- # end # The result of `find_element :tag, "button"`
315
+ # end # The result of 'find_element :tag, "button"'
316
316
  #
317
317
  def within_context(context)
318
318
  block_given? ? @bridge.within_context(context, &Proc.new) : @bridge.within_context(context)
319
319
  end
320
320
 
321
- # Change to the default context. This is equivalent to `set_context nil`.
321
+ # Change to the default context. This is equivalent to +set_context nil+.
322
322
  #
323
323
  # @example
324
324
  #
@@ -368,6 +368,8 @@ module Appium
368
368
  # @driver.set_immediate_value element, 'hello'
369
369
  #
370
370
  def set_immediate_value(element, *value)
371
+ ::Appium::Logger.warn '[DEPRECATION] driver#set_immediate_value(element, *value) is deprecated. ' \
372
+ 'Use Element#immediate_value(*value) instead'
371
373
  @bridge.set_immediate_value(element, *value)
372
374
  end
373
375
 
@@ -375,9 +377,11 @@ module Appium
375
377
  #
376
378
  # @example
377
379
  #
378
- # replace_value element, 'hello'
380
+ # @driver.replace_value element, 'hello'
379
381
  #
380
382
  def replace_value(element, *value)
383
+ ::Appium::Logger.warn '[DEPRECATION] driver#replace_value(element, *value) is deprecated. ' \
384
+ 'Use Element#replace_value(*value) instead'
381
385
  @bridge.replace_value(element, *value)
382
386
  end
383
387
 
@@ -495,15 +499,15 @@ module Appium
495
499
 
496
500
  # Press keycode on the device.
497
501
  # http://developer.android.com/reference/android/view/KeyEvent.html
498
- # @param [Integer] key The key to press. The values which have `KEYCODE_` prefix in http://developer.android.com/reference/android/view/KeyEvent.html
499
- # e.g.: KEYCODE_HOME is `3` or `0x00000003`
502
+ # @param [Integer] key The key to press. The values which have +KEYCODE_+ prefix in http://developer.android.com/reference/android/view/KeyEvent.html
503
+ # e.g.: KEYCODE_HOME is +3+ or +0x00000003+
500
504
  # @param [[Integer]] metastate The state the metakeys should be in when pressing the key. Default is empty Array.
501
- # Metastate have `META_` prefix in https://developer.android.com/reference/android/view/KeyEvent.html
502
- # e.g.: META_SHIFT_ON is `1` or `0x00000001`
505
+ # Metastate have +META_+ prefix in https://developer.android.com/reference/android/view/KeyEvent.html
506
+ # e.g.: META_SHIFT_ON is +1+ or +0x00000001+
503
507
  # @param [[Integer]] flags Native Android flag value. Several flags can be combined into a single key event.
504
508
  # Default is empty Array. Can set multiple flags as Array.
505
- # Flags have `FLAG_` prefix in http://developer.android.com/reference/android/view/KeyEvent.html
506
- # e.g.: FLAG_CANCELED is `32` or `0x00000020`
509
+ # Flags have +FLAG_+ prefix in http://developer.android.com/reference/android/view/KeyEvent.html
510
+ # e.g.: FLAG_CANCELED is +32+ or +0x00000020+
507
511
  #
508
512
  # @example
509
513
  #
@@ -517,15 +521,15 @@ module Appium
517
521
 
518
522
  # Long press keycode on the device.
519
523
  # http://developer.android.com/reference/android/view/KeyEvent.html
520
- # @param [Integer] key The key to long press. The values which have `KEYCODE_` prefix in http://developer.android.com/reference/android/view/KeyEvent.html
521
- # e.g.: KEYCODE_HOME is `3` or `0x00000003`
524
+ # @param [Integer] key The key to long press. The values which have +KEYCODE_+ prefix in http://developer.android.com/reference/android/view/KeyEvent.html
525
+ # e.g.: KEYCODE_HOME is +3+ or +0x00000003+
522
526
  # @param [[Integer]] metastate The state the metakeys should be in when pressing the key. Default is empty Array.
523
- # Metastate have `META_` prefix in https://developer.android.com/reference/android/view/KeyEvent.html
524
- # e.g.: META_SHIFT_ON is `1` or `0x00000001`
527
+ # Metastate have +META_+ prefix in https://developer.android.com/reference/android/view/KeyEvent.html
528
+ # e.g.: META_SHIFT_ON is +1+ or +0x00000001+
525
529
  # @param [[Integer]] flags Native Android flag value. Several flags can be combined into a single key event.
526
530
  # Default is empty Array. Can set multiple flags as Array.
527
- # Flags have `FLAG_` prefix in http://developer.android.com/reference/android/view/KeyEvent.html
528
- # e.g.: FLAG_CANCELED is `32` or `0x00000020`
531
+ # Flags have +FLAG_+ prefix in http://developer.android.com/reference/android/view/KeyEvent.html
532
+ # e.g.: FLAG_CANCELED is +32+ or +0x00000020+
529
533
  #
530
534
  # @example
531
535
  #
@@ -598,14 +602,14 @@ module Appium
598
602
  # @param [String] path The absolute local path or remote http URL to an .ipa or .apk file,
599
603
  # or a .zip containing one of these.
600
604
  # @param [Boolean] replace Only for Android. Whether to reinstall/upgrade the package if it is already present
601
- # on the device under test. `true` by default
605
+ # on the device under test. +true+ by default
602
606
  # @param [Integer] timeout Only for Android. How much time to wait for the installation to complete.
603
607
  # 60000ms by default.
604
608
  # @param [Boolean] allow_test_packages Only for Android. Whether to allow installation of packages marked as test
605
- # in the manifest. `false` by default
606
- # @param [Boolean] use_sdcard Only for Android. Whether to use the SD card to install the app. `false` by default
609
+ # in the manifest. +false+ by default
610
+ # @param [Boolean] use_sdcard Only for Android. Whether to use the SD card to install the app. +false+ by default
607
611
  # @param [Boolean] grant_permissions Only for Android. whether to automatically grant application permissions
608
- # on Android 6+ after the installation completes. `false` by default
612
+ # on Android 6+ after the installation completes. +false+ by default
609
613
  #
610
614
  # @example
611
615
  #
@@ -629,7 +633,7 @@ module Appium
629
633
 
630
634
  # @param [Strong] app_id BundleId for iOS or package name for Android
631
635
  # @param [Boolean] keep_data Only for Android. Whether to keep application data and caches after it is uninstalled.
632
- # `false` by default
636
+ # +false+ by default
633
637
  # @param [Integer] timeout Only for Android. How much time to wait for the uninstall to complete. 20000ms by default.
634
638
  #
635
639
  # @example
@@ -728,7 +732,7 @@ module Appium
728
732
  #
729
733
  # # iOS
730
734
  # @driver.start_recording_screen video_type: 'libx264'
731
- # @driver.stop_and_save_recording_screen 'example.mp4' # Video type `libx264` can be play as `.mp4` video
735
+ # @driver.stop_and_save_recording_screen 'example.mp4' # Video type 'libx264' can be play as '.mp4' video
732
736
  #
733
737
  # # Android
734
738
  # @driver.start_recording_screen
@@ -752,7 +756,7 @@ module Appium
752
756
  #
753
757
  # @param [String] format The set of format specifiers. Read https://momentjs.com/docs/ to get
754
758
  # the full list of supported datetime format specifiers.
755
- # The default format is `YYYY-MM-DDTHH:mm:ssZ`, which complies to ISO-8601
759
+ # The default format is +YYYY-MM-DDTHH:mm:ssZ+, which complies to ISO-8601
756
760
  # @return [String] Formatted datetime string or the raw command output if formatting fails
757
761
  #
758
762
  # @example
@@ -774,7 +778,7 @@ module Appium
774
778
  end
775
779
 
776
780
  #
777
- # Send multiple W3C action chains to server. Use `@driver.action` for single action chain.
781
+ # Send multiple W3C action chains to server. Use +@driver.action+ for single action chain.
778
782
  #
779
783
  # @param [Array] data Array of actions
780
784
  # @return nil|error
@@ -797,7 +801,7 @@ module Appium
797
801
  # origin: ::Selenium::WebDriver::Interactions::PointerMove::VIEWPORT)
798
802
  # f2.create_pointer_up(:left)
799
803
  #
800
- # @driver.perform_actions [f1, f2] #=> `nil` if the action succeed
804
+ # @driver.perform_actions [f1, f2] #=> 'nil' if the action succeed
801
805
  #
802
806
  def perform_actions(data)
803
807
  raise ArgumentError, "'#{data}' must be Array" unless data.is_a? Array
@@ -868,7 +872,7 @@ module Appium
868
872
  end
869
873
 
870
874
  # Retrieve the capabilities of the specified session.
871
- # It's almost same as `@driver.capabilities` but you can get more details.
875
+ # It's almost same as +@driver.capabilities+ but you can get more details.
872
876
  #
873
877
  # @return [Selenium::WebDriver::Remote::Capabilities]
874
878
  #
@@ -1036,7 +1040,7 @@ module Appium
1036
1040
  # @@driver.update_settings({ fixImageFindScreenshotDims: false, fixImageTemplateSize: true,
1037
1041
  # autoUpdateImageElementPosition: true })
1038
1042
  # e = @@driver.find_elements_by_image ['./test/functional/data/test_element_image.png']
1039
- # e == [] # if the `e` is empty
1043
+ # e == [] # if the 'e' is empty
1040
1044
  #
1041
1045
  def find_elements_by_image(img_path)
1042
1046
  template = Base64.strict_encode64 File.read img_path
@@ -1053,7 +1057,7 @@ module Appium
1053
1057
  # @param [String] script The string consisting of the script itself
1054
1058
  # @param [String] type The name of the script type.
1055
1059
  # Defaults to 'webdriverio'. Depends on server implementation which type is supported.
1056
- # @param [Integer] timeout_ms The number of `ms` Appium should wait for the script to finish
1060
+ # @param [Integer] timeout_ms The number of +ms+ Appium should wait for the script to finish
1057
1061
  # before killing it due to timeout.
1058
1062
  #
1059
1063
  # @return [Appium::Core::Base::Device::ExecuteDriver::Result] The script result parsed by
@@ -1070,8 +1074,8 @@ module Appium
1070
1074
  # SCRIPT
1071
1075
  # r = @@driver.execute_driver(script: script, type: 'webdriverio', timeout: 10_000)
1072
1076
  # r #=> An instance of Appium::Core::Base::Device::ExecuteDriver::Result
1073
- # r.result #=> The `result` key part as the result of the script
1074
- # r.logs #=> The `logs` key part as `{'log' => [], 'warn' => [], 'error' => []}`
1077
+ # r.result #=> The 'result' key part as the result of the script
1078
+ # r.logs #=> The 'logs' key part as '{'log' => [], 'warn' => [], 'error' => []}'
1075
1079
  #
1076
1080
  def execute_driver(script: '', type: 'webdriverio', timeout_ms: nil)
1077
1081
  @bridge.execute_driver(script: script, type: type, timeout_ms: timeout_ms)
@@ -34,13 +34,13 @@ module Appium
34
34
  # @param [string|integer] port A port number to update server_url to
35
35
  # @param [string] path A path to update server_url to
36
36
  #
37
- # @return [URI] An instance of URI updated to. Returns default `server_url` if some of arguments are `nil`
37
+ # @return [URI] An instance of URI updated to. Returns default +server_url+ if some of arguments are +nil+
38
38
  def update_sending_request_to(scheme:, host:, port:, path:)
39
39
  return @server_url unless validate_url_param(scheme, host, port, path)
40
40
 
41
41
  ::Appium::Logger.debug("[experimental] This feature, #{__method__}, is an experimental")
42
42
 
43
- # Add / if `path` does not have it
43
+ # Add / if 'path' does not have it
44
44
  path = path.start_with?('/') ? path : "/#{path}"
45
45
  path = path.end_with?('/') ? path : "#{path}/"
46
46
 
@@ -22,7 +22,7 @@ module Appium
22
22
  #
23
23
  # @example
24
24
  #
25
- # ::Appium::Core::Base.platform.windows? #=> `true` or `false`
25
+ # ::Appium::Core::Base.platform.windows? #=> 'true' or 'false'
26
26
  #
27
27
  def self.platform
28
28
  ::Selenium::WebDriver::Platform
@@ -94,7 +94,7 @@ module Appium
94
94
 
95
95
  # @since Appium 1.3.4
96
96
  # @!method save_viewport_screenshot
97
- # Save screenshot except for status bar while `@driver.save_screenshot` save entire screen.
97
+ # Save screenshot except for status bar while +@driver.save_screenshot+ save entire screen.
98
98
  #
99
99
  # @example
100
100
  #
@@ -93,7 +93,7 @@ module Appium
93
93
  # ## With uiautomator
94
94
  # @driver.find_elements :uiautomator, 'new UiSelector().clickable(true)'
95
95
  # ## With viewtag, but only for Espresso
96
- # ## `setTag`/`getTag` in https://developer.android.com/reference/android/view/View
96
+ # ## 'setTag'/'getTag' in https://developer.android.com/reference/android/view/View
97
97
  # @driver.find_elements :viewtag, 'new UiSelector().clickable(true)'
98
98
  # # With data_matcher. The argument should be JSON format.
99
99
  # @driver.find_elements :data_matcher, { name: 'hasEntry', args: %w(title Animation) }.to_json
@@ -111,9 +111,9 @@ module Appium
111
111
  # @driver.find_elements :class_chain, 'XCUIElementTypeWindow'
112
112
  # ### select the second last child of the second child window
113
113
  # @driver.find_elements :class_chain, 'XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]'
114
- # ### matching predicate. <code>`</code> is the mark.
115
- # @driver.find_elements :class_chain, 'XCUIElementTypeWindow[`visible = 1][`name = "bla"`]'
116
- # ### containing predicate. `$` is the mark.
114
+ # ### matching predicate. <code>'</code> is the mark.
115
+ # @driver.find_elements :class_chain, 'XCUIElementTypeWindow['visible = 1]['name = "bla"']'
116
+ # ### containing predicate. '$' is the mark.
117
117
  # ### Require appium-xcuitest-driver 2.54.0+. PR: https://github.com/facebook/WebDriverAgent/pull/707/files
118
118
  # @driver.find_elements :class_chain, 'XCUIElementTypeWindow[$name = \"bla$$$bla\"$]'
119
119
  # e = find_element :class_chain, "**/XCUIElementTypeWindow[$name == 'Buttons'$]"
@@ -113,7 +113,7 @@ module Appium
113
113
  end
114
114
 
115
115
  # Performs images matching to calculate the similarity score between them
116
- # with default options. The flow there is similar to the one used in `find_image_occurrence`
116
+ # with default options. The flow there is similar to the one used in +find_image_occurrence+
117
117
  # but it is mandatory that both images are of equal size.
118
118
  #
119
119
  # @param [String] first_image An image data. All image formats, that OpenCV library itself accepts, are supported.
@@ -140,14 +140,14 @@ module Appium
140
140
  # It is expected that both OpenCV framework and opencv4nodejs
141
141
  # module are installed on the machine where Appium server is running.
142
142
  #
143
- # @param [Symbol] mode One of possible comparison modes: `:matchFeatures`, `:getSimilarity`, `:matchTemplate`.
144
- # `:matchFeatures is by default.
143
+ # @param [Symbol] mode One of possible comparison modes: +:matchFeatures+, +:getSimilarity+, +:matchTemplate+.
144
+ # +:matchFeatures is by default.
145
145
  # @param [String] first_image An image data. All image formats, that OpenCV library itself accepts, are supported.
146
146
  # @param [String] second_image An image data. All image formats, that OpenCV library itself accepts, are supported.
147
- # @param [Hash] options The content of this dictionary depends on the actual `mode` value.
148
- # See the documentation on `appium-support` module for more details.
149
- # @return [Hash] The content of the resulting dictionary depends on the actual `mode` and `options` values.
150
- # See the documentation on `appium-support` module for more details.
147
+ # @param [Hash] options The content of this dictionary depends on the actual +mode+ value.
148
+ # See the documentation on +appium-support+ module for more details.
149
+ # @return [Hash] The content of the resulting dictionary depends on the actual +mode+ and +options+ values.
150
+ # See the documentation on +appium-support+ module for more details.
151
151
  #
152
152
  def compare_images(mode: :matchFeatures, first_image:, second_image:, options: nil)
153
153
  raise "content_type should be #{MODE}" unless MODE.member?(mode)
@@ -17,8 +17,8 @@ module Appium
17
17
  # MultiTouch actions allow for multiple touches to happen at the same time,
18
18
  # for instance, to simulate multiple finger swipes.
19
19
  #
20
- # Create a series of touch actions by themselves (without a `prepare()`), then
21
- # add to a new MultiTouch action. When ready, call `prepare()` and all
20
+ # Create a series of touch actions by themselves (without a +prepare()+), then
21
+ # add to a new MultiTouch action. When ready, call +prepare()+ and all
22
22
  # actions will be executed simultaneously.
23
23
  #
24
24
  # @example
@@ -15,7 +15,7 @@
15
15
  module Appium
16
16
  module Core
17
17
  # Perform a series of gestures, one after another. Gestures are chained
18
- # together and only performed when `perform()` is called. Default is conducted by global driver.
18
+ # together and only performed when +perform()+ is called. Default is conducted by global driver.
19
19
  #
20
20
  # Each method returns the object itself, so calls can be chained.
21
21
  #
@@ -45,7 +45,7 @@ module Appium
45
45
 
46
46
  # Move to the given co-ordinates.
47
47
  #
48
- # `move_to`'s `x` and `y` have two case. One is working as coordinate, the other is working as offset.
48
+ # +move_to+'s +x+ and +y+ have two case. One is working as coordinate, the other is working as offset.
49
49
  #
50
50
  # @param opts [Hash] Options
51
51
  # @option opts [integer] :x x co-ordinate to move to if element isn't set. Works as an absolute if x is set with Element.
@@ -57,7 +57,7 @@ module Appium
57
57
  end
58
58
 
59
59
  # Press down for a specific duration.
60
- # Alternatively, you can use `press(...).wait(...).release()` instead of `long_press` if duration doesn't work well.
60
+ # Alternatively, you can use +press(...).wait(...).release()+ instead of +long_press+ if duration doesn't work well.
61
61
  # https://github.com/appium/ruby_lib/issues/231#issuecomment-269895512
62
62
  # e.g. Appium::TouchAction.new.press(x: 280, y: 530).wait(2000).release.perform
63
63
  #
@@ -72,14 +72,14 @@ module Appium
72
72
  chain_method(:longPress, args) # longPress is what the appium server expects
73
73
  end
74
74
 
75
- # Press a finger onto the screen. Finger will stay down until you call `release`.
75
+ # Press a finger onto the screen. Finger will stay down until you call +release+.
76
76
  #
77
77
  # @param opts [Hash] Options
78
78
  # @option opts [WebDriver::Element] :element (Optional) Element to press within.
79
79
  # @option opts [integer] :x x co-ordinate to press on
80
80
  # @option opts [integer] :y y co-ordinate to press on
81
81
  # @option opts [Float] pressure (iOS Only) press as force touch.
82
- # See the description of `force` property on Apple's UITouch class
82
+ # See the description of +force+ property on Apple's UITouch class
83
83
  # (https://developer.apple.com/documentation/uikit/uitouch?language=objc)
84
84
  # for more details on possible value ranges.
85
85
  def press(opts)
@@ -101,7 +101,7 @@ module Appium
101
101
  end
102
102
 
103
103
  # Touch a point on the screen.
104
- # Alternatively, you can use `press(...).release.perform` instead of `tap(...).perform`.
104
+ # Alternatively, you can use +press(...).release.perform+ instead of +tap(...).perform+.
105
105
  #
106
106
  # @param opts [Hash] Options
107
107
  # @option opts [WebDriver::Element] :element (Optional) Element to restrict scope too.
@@ -28,8 +28,8 @@ module Appium
28
28
  #
29
29
  # If only a number is provided then it's treated as the timeout value.
30
30
  #
31
- # @param [Integer] timeout Seconds to wait before timing out. Set default by `appium_wait_timeout` (30).
32
- # @param [Integer] interval Seconds to sleep between polls. Set default by `appium_wait_interval` (0.5).
31
+ # @param [Integer] timeout Seconds to wait before timing out. Set default by +appium_wait_timeout+ (30).
32
+ # @param [Integer] interval Seconds to sleep between polls. Set default by +appium_wait_interval+ (0.5).
33
33
  # @param [String] message Exception message if timed out.
34
34
  # @param [Array, Exception] ignored Exceptions to ignore while polling (default: Exception)
35
35
  # @param [Object, NilClass] object Object to evaluate block against
@@ -72,8 +72,8 @@ module Appium
72
72
  #
73
73
  # If only a number is provided then it's treated as the timeout value.
74
74
  #
75
- # @param [Integer] timeout Seconds to wait before timing out. Set default by `appium_wait_timeout` (30).
76
- # @param [Integer] interval Seconds to sleep between polls. Set default by `appium_wait_interval` (0.5).
75
+ # @param [Integer] timeout Seconds to wait before timing out. Set default by +appium_wait_timeout+ (30).
76
+ # @param [Integer] interval Seconds to sleep between polls. Set default by +appium_wait_interval+ (0.5).
77
77
  # @param [String] message Exception message if timed out.
78
78
  # @param [Array, Exception] ignored Exceptions to ignore while polling (default: Exception)
79
79
  # @param [Object, NilClass] object Object to evaluate block against
@@ -128,8 +128,8 @@ module Appium
128
128
  #
129
129
  # If only a number is provided then it's treated as the timeout value.
130
130
  #
131
- # @param [Integer] timeout Seconds to wait before timing out. Set default by `appium_wait_timeout` (30).
132
- # @param [Integer] interval Seconds to sleep between polls. Set default by `appium_wait_interval` (0.5).
131
+ # @param [Integer] timeout Seconds to wait before timing out. Set default by +appium_wait_timeout+ (30).
132
+ # @param [Integer] interval Seconds to sleep between polls. Set default by +appium_wait_interval+ (0.5).
133
133
  # @param [String] message Exception message if timed out.
134
134
  # @param [Array, Exception] ignored Exceptions to ignore while polling (default: Exception)
135
135
  #
@@ -150,8 +150,8 @@ module Appium
150
150
  #
151
151
  # If only a number is provided then it's treated as the timeout value.
152
152
  #
153
- # @param [Integer] timeout Seconds to wait before timing out. Set default by `appium_wait_timeout` (30).
154
- # @param [Integer] interval Seconds to sleep between polls. Set default by `appium_wait_interval` (0.5).
153
+ # @param [Integer] timeout Seconds to wait before timing out. Set default by +appium_wait_timeout+ (30).
154
+ # @param [Integer] interval Seconds to sleep between polls. Set default by +appium_wait_interval+ (0.5).
155
155
  # @param [String] message Exception message if timed out.
156
156
  # @param [Array, Exception] ignored Exceptions to ignore while polling (default: Exception)
157
157
  #
@@ -25,13 +25,13 @@ module Appium
25
25
  # with close method.
26
26
  #
27
27
  # @param [String] url URL to establish web socket connection. If the URL has no port, the client use:
28
- # `ws`: 80, `wss`: 443 ports.
28
+ # +ws+: 80, +wss+: 443 ports.
29
29
  # @param [Array] protocols An array of strings representing acceptable subprotocols for use over the socket.
30
30
  # The driver will negotiate one of these to use via the Sec-WebSocket-Protocol header
31
31
  # if supported by the other peer. Default is nil.
32
32
  # The protocols is equal to https://github.com/faye/faye-websocket-ruby/ 's one for client.
33
33
  # @param [Hash] options Initialize options for Faye client. Read https://github.com/faye/faye-websocket-ruby#initialization-options
34
- # for more details. Default is `{}`.
34
+ # for more details. Default is +{}+.
35
35
  #
36
36
  # @example
37
37
  # ws = WebSocket.new(url: "ws://#{host}:#{port}/ws/session/#{@session_id}/appium/device/logcat")
@@ -127,7 +127,7 @@ module Appium
127
127
  # In general, users should customise only message_data
128
128
 
129
129
  #
130
- # Fires when the socket receives a message. The message gas one `data` attribute and this method can handle the data.
130
+ # Fires when the socket receives a message. The message gas one +data+ attribute and this method can handle the data.
131
131
  # The data is either a String (for text frames) or an Array of byte-sized integers (for binary frames).
132
132
  #
133
133
  # Default is just put a debug message and puts the result on standard out.
@@ -149,11 +149,11 @@ module Appium
149
149
  end
150
150
 
151
151
  #
152
- # Fires when either the client or the server closes the connection. The method gets `code` and `reason` attributes.
152
+ # Fires when either the client or the server closes the connection. The method gets +code+ and +reason+ attributes.
153
153
  # They expose the status code and message sent by the peer that closed the connection.
154
154
  #
155
155
  # Default is just put a error message.
156
- # The methods also clear `client` instance and stop the eventmachine which is called in initialising this class.
156
+ # The methods also clear +client+ instance and stop the eventmachine which is called in initialising this class.
157
157
  #
158
158
  def handle_close(code, reason)
159
159
  ::Appium::Logger.debug %W(#{self.class} :close #{code} #{reason})
@@ -51,7 +51,7 @@ module Appium
51
51
  @wait_interval = appium_lib_opts.fetch :wait_interval, ::Appium::Core::Wait::DEFAULT_INTERVAL
52
52
 
53
53
  # to pass it in Selenium.new.
54
- # `listener = opts.delete(:listener)` is called in Selenium::Driver.new
54
+ # 'listener = opts.delete(:listener)' is called in Selenium::Driver.new
55
55
  @listener = appium_lib_opts.fetch :listener, nil
56
56
  end
57
57
 
@@ -184,9 +184,9 @@ module Appium
184
184
  #
185
185
  # # format 1
186
186
  # @core = Appium::Core.for caps: {...}, appium_lib: {...}
187
- # # format 2. `desired_capabilities:` is also available instead of `caps:`. Either is fine.
187
+ # # format 2. 'desired_capabilities:' is also available instead of 'caps:'. Either is fine.
188
188
  # @core = Appium::Core.for url: "http://127.0.0.1:8080/wd/hub", desired_capabilities: {...}, appium_lib: {...}
189
- # # format 3. `appium_lib: {...}` can be blank
189
+ # # format 3. 'appium_lib: {...}' can be blank
190
190
  # @core = Appium::Core.for url: "http://127.0.0.1:8080/wd/hub", desired_capabilities: {...}
191
191
  #
192
192
  #
@@ -211,11 +211,11 @@ module Appium
211
211
  # listener: nil,
212
212
  # }
213
213
  # }
214
- # @core = Appium::Core.for(opts) # create a core driver with `opts` and extend methods into `self`
215
- # @core.start_driver # Connect to `http://127.0.0.1:8080/wd/hub` because of `port: 8080`
214
+ # @core = Appium::Core.for(opts) # create a core driver with 'opts' and extend methods into 'self'
215
+ # @core.start_driver # Connect to 'http://127.0.0.1:8080/wd/hub' because of 'port: 8080'
216
216
  #
217
217
  # # Start iOS driver with .zip file over HTTP
218
- # # `desired_capabilities:` is also available instead of `caps:`. Either is fine.
218
+ # # 'desired_capabilities:' is also available instead of 'caps:'. Either is fine.
219
219
  # opts = {
220
220
  # desired_capabilities: {
221
221
  # platformName: :ios,
@@ -234,9 +234,9 @@ module Appium
234
234
  # }
235
235
  # }
236
236
  # @core = Appium::Core.for(opts)
237
- # @core.start_driver # Connect to `http://custom-host:8080/wd/hub.com`
237
+ # @core.start_driver # Connect to 'http://custom-host:8080/wd/hub.com'
238
238
  #
239
- # # Start iOS driver as another format. `url` is available like below
239
+ # # Start iOS driver as another format. 'url' is available like below
240
240
  # opts = {
241
241
  # url: "http://custom-host:8080/wd/hub.com",
242
242
  # desired_capabilities: {
@@ -254,8 +254,8 @@ module Appium
254
254
  # listener: nil,
255
255
  # }
256
256
  # }
257
- # @core = Appium::Core.for(opts) # create a core driver with `opts` and extend methods into `self`
258
- # @core.start_driver # start driver with `url`. Connect to `http://custom-host:8080/wd/hub.com`
257
+ # @core = Appium::Core.for(opts) # create a core driver with 'opts' and extend methods into 'self'
258
+ # @core.start_driver # start driver with 'url'. Connect to 'http://custom-host:8080/wd/hub.com'
259
259
  #
260
260
  def self.for(opts = {})
261
261
  new(opts)
@@ -274,7 +274,7 @@ module Appium
274
274
  # @private
275
275
  def initialize(opts = {})
276
276
  @delegate_target = self # for testing purpose
277
- @automation_name = nil # initialise before `set_automation_name`
277
+ @automation_name = nil # initialise before 'set_automation_name'
278
278
 
279
279
  opts = Appium.symbolize_keys opts
280
280
  validate_keys(opts)
@@ -325,7 +325,7 @@ module Appium
325
325
  # }
326
326
  # }
327
327
  #
328
- # @core = Appium::Core.for(opts) # create a core driver with `opts` and extend methods into `self`
328
+ # @core = Appium::Core.for(opts) # create a core driver with 'opts' and extend methods into 'self'
329
329
  # @driver = @core.start_driver server_url: "http://127.0.0.1:8000/wd/hub"
330
330
  #
331
331
  # # Attach custom HTTP client
@@ -421,7 +421,7 @@ module Appium
421
421
  # }
422
422
  # }
423
423
  #
424
- # Returns blank hash for Selenium Grid since `remote_status` gets 500 error
424
+ # Returns blank hash for Selenium Grid since 'remote_status' gets 500 error
425
425
  #
426
426
  # @example
427
427
  #
@@ -456,7 +456,7 @@ module Appium
456
456
  # @example
457
457
  #
458
458
  # @core.screenshot '/tmp/hi.png' #=> nil
459
- # # same as `@driver.save_screenshot png_save_path`
459
+ # # same as '@driver.save_screenshot png_save_path'
460
460
  #
461
461
  def screenshot(png_save_path)
462
462
  ::Appium::Logger.warn '[DEPRECATION] screenshot will be removed. Please use driver.save_screenshot instead.'
@@ -496,11 +496,14 @@ module Appium
496
496
  when :tizen
497
497
  # https://github.com/Samsung/appium-tizen-driver
498
498
  ::Appium::Logger.debug('tizen')
499
- when :youiengine
500
- # https://github.com/YOU-i-Labs/appium-youiengine-driver
501
- ::Appium::Logger.debug('YouiEngine')
502
499
  else
503
- ::Appium::Logger.warn('no device matched')
500
+ case automation_name
501
+ when :youiengine
502
+ # https://github.com/YOU-i-Labs/appium-youiengine-driver
503
+ ::Appium::Logger.debug('YouiEngine')
504
+ else
505
+ ::Appium::Logger.warn("No matched driver by platformName: #{device} and automationName: #{automation_name}")
506
+ end
504
507
  end
505
508
 
506
509
  self
@@ -541,7 +544,7 @@ module Appium
541
544
 
542
545
  # @private
543
546
  # Path to the .apk, .app or .app.zip.
544
- # The path can be local, HTTP/S, Windows Share and other path like `sauce-storage:`.
547
+ # The path can be local, HTTP/S, Windows Share and other path like 'sauce-storage:'.
545
548
  # Use @caps[:app] without modifications if the path isn't HTTP/S or local path.
546
549
  def set_app_path
547
550
  return unless @caps && @caps[:app] && !@caps[:app].empty?