appium_lib 9.7.1 → 9.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,8 @@ module Appium
8
8
  def self.for(target)
9
9
  Core::Ios::SearchContext.extend
10
10
  target.extend Appium::Ios::Device
11
- patch_webdriver_element
11
+
12
+ Core::Ios::Uiautomation.patch_webdriver_element
12
13
  end
13
14
  end
14
15
  end
@@ -6,8 +6,8 @@ module Appium
6
6
  # class_eval inside a method because class Selenium::WebDriver::Element
7
7
  # will trigger as soon as the file is required. in contrast a method
8
8
  # will trigger only when invoked.
9
- def patch_webdriver_element
10
- Selenium::WebDriver::Element.class_eval do
9
+ def self.patch_webdriver_element
10
+ ::Selenium::WebDriver::Element.class_eval do
11
11
  # Cross platform way of entering text into a textfield
12
12
  def type(text, driver = $driver)
13
13
  driver.execute_script %(au.getElement('#{ref}').setValue('#{text}');)
@@ -63,49 +63,46 @@ module Appium
63
63
  #
64
64
  # @example
65
65
  #
66
- # ```ruby
67
- # require 'rubygems'
68
- # require 'appium_lib'
69
- #
70
- # # platformName takes a string or a symbol.
71
- #
72
- # # Start iOS driver with global scope
73
- # opts = {
74
- # caps: {
75
- # platformName: :ios,
76
- # app: '/path/to/MyiOS.app'
77
- # },
78
- # appium_lib: {
79
- # wait_timeout: 30
80
- # }
66
+ # require 'rubygems'
67
+ # require 'appium_lib'
68
+ #
69
+ # # platformName takes a string or a symbol.
70
+ # # Start iOS driver with global scope
71
+ # opts = {
72
+ # caps: {
73
+ # platformName: :ios,
74
+ # app: '/path/to/MyiOS.app'
75
+ # },
76
+ # appium_lib: {
77
+ # wait_timeout: 30
81
78
  # }
82
- # Appium::Driver.new(opts, true).start_driver
83
- #
84
- # # Start Android driver with global scope
85
- # opts = {
86
- # caps: {
87
- # platformName: :android,
88
- # app: '/path/to/my.apk'
89
- # },
90
- # appium_lib: {
91
- # wait_timeout: 30,
92
- # wait_interval: 1
93
- # }
79
+ # }
80
+ # Appium::Driver.new(opts, true).start_driver
81
+ #
82
+ # # Start Android driver with global scope
83
+ # opts = {
84
+ # caps: {
85
+ # platformName: :android,
86
+ # app: '/path/to/my.apk'
87
+ # },
88
+ # appium_lib: {
89
+ # wait_timeout: 30,
90
+ # wait_interval: 1
94
91
  # }
95
- # Appium::Driver.new(opts, true).start_driver
96
- #
97
- # # Start iOS driver without global scope
98
- # opts = {
99
- # caps: {
100
- # platformName: :ios,
101
- # app: '/path/to/MyiOS.app'
102
- # },
103
- # appium_lib: {
104
- # wait_timeout: 30
105
- # }
92
+ # }
93
+ # Appium::Driver.new(opts, true).start_driver
94
+ #
95
+ # # Start iOS driver without global scope
96
+ # opts = {
97
+ # caps: {
98
+ # platformName: :ios,
99
+ # app: '/path/to/MyiOS.app'
100
+ # },
101
+ # appium_lib: {
102
+ # wait_timeout: 30
106
103
  # }
107
- # Appium::Driver.new(opts, false).start_driver
108
- # ```
104
+ # }
105
+ # Appium::Driver.new(opts, false).start_driver
109
106
  #
110
107
  # @param opts [Object] A hash containing various options.
111
108
  # @param global_driver [Bool] A bool require global driver before initialize.
@@ -279,14 +276,13 @@ module Appium
279
276
 
280
277
  # Returns the server's version info
281
278
  #
282
- # ```ruby
283
- # {
279
+ # @example
280
+ # {
284
281
  # "build" => {
285
282
  # "version" => "0.18.1",
286
283
  # "revision" => "d242ebcfd92046a974347ccc3a28f0e898595198"
287
284
  # }
288
- # }
289
- # ```
285
+ # }
290
286
  #
291
287
  # @return [Hash]
292
288
  def appium_server_version
@@ -311,11 +307,11 @@ module Appium
311
307
 
312
308
  # Returns the client's version info
313
309
  #
314
- # ```ruby
315
- # {
316
- # "version" => "9.1.1"
317
- # }
318
- # ```
310
+ # @example
311
+ #
312
+ # {
313
+ # "version" => "9.1.1"
314
+ # }
319
315
  #
320
316
  # @return [Hash]
321
317
  def appium_client_version
@@ -378,7 +374,9 @@ module Appium
378
374
 
379
375
  # Takes a png screenshot and saves to the target path.
380
376
  #
381
- # Example: screenshot '/tmp/hi.png'
377
+ # @example
378
+ #
379
+ # screenshot '/tmp/hi.png'
382
380
  #
383
381
  # @param png_save_path [String] the full path to save the png
384
382
  # @return [nil]
@@ -397,9 +395,11 @@ module Appium
397
395
  # @return [Selenium::WebDriver::Dimension]
398
396
  #
399
397
  # @example
398
+ #
400
399
  # size = @driver.window_size
401
400
  # size.width #=> Integer
402
401
  # size.height #=> Integer
402
+ #
403
403
  def window_size
404
404
  @driver.window_size
405
405
  end
@@ -408,23 +408,22 @@ module Appium
408
408
  # You can customise http_client as the following
409
409
  #
410
410
  # @example
411
- # ```ruby
412
- # require 'rubygems'
413
- # require 'appium_lib'
414
- #
415
- # # platformName takes a string or a symbol.
416
- #
417
- # # Start iOS driver
418
- # opts = {
419
- # caps: {
420
- # platformName: :ios,
421
- # app: '/path/to/MyiOS.app'
422
- # },
423
- # appium_lib: {
424
- # wait_timeout: 30
425
- # }
411
+ #
412
+ # require 'rubygems'
413
+ # require 'appium_lib'
414
+ #
415
+ # # platformName takes a string or a symbol.
416
+ # # Start iOS driver
417
+ # opts = {
418
+ # caps: {
419
+ # platformName: :ios,
420
+ # app: '/path/to/MyiOS.app'
421
+ # },
422
+ # appium_lib: {
423
+ # wait_timeout: 30
426
424
  # }
427
- # Appium::Driver.new(opts).start_driver
425
+ # }
426
+ # Appium::Driver.new(opts).start_driver
428
427
  #
429
428
  # @option http_client_ops [Hash] :http_client Custom HTTP Client
430
429
  # @option http_client_ops [Hash] :open_timeout Custom open timeout for http client.
@@ -470,11 +469,11 @@ module Appium
470
469
 
471
470
  # Set implicit wait. Default to @core.default_wait.
472
471
  #
473
- # ```ruby
474
- # set_wait 2
475
- # set_wait # @core.default_wait
472
+ # @example
473
+ #
474
+ # set_wait 2
475
+ # set_wait # @core.default_wait
476
476
  #
477
- # ```
478
477
  #
479
478
  # @param timeout [Integer] the timeout in seconds
480
479
  # @return [void]
@@ -526,18 +525,16 @@ module Appium
526
525
  # Calls @driver.find_elements_with_appium
527
526
  #
528
527
  # @example
529
- # ```ruby
530
- # @driver = Appium::Driver.new(opts, false)
531
- # @driver.find_elements :predicate, yyy
532
- # ```
528
+ #
529
+ # @driver = Appium::Driver.new(opts, false)
530
+ # @driver.find_elements :predicate, yyy
533
531
  #
534
532
  # If you call `Appium.promote_appium_methods`, you can call `find_elements` directly.
535
533
  #
536
534
  # @example
537
- # ```ruby
538
- # @driver = Appium::Driver.new(opts, false)
539
- # @driver.find_elements :predicate, yyy
540
- # ```
535
+ #
536
+ # @driver = Appium::Driver.new(opts, false)
537
+ # @driver.find_elements :predicate, yyy
541
538
  #
542
539
  # If you call `Appium.promote_appium_methods`, you can call `find_elements` directly.
543
540
  #
@@ -550,10 +547,9 @@ module Appium
550
547
  # Calls @driver.find_element
551
548
  #
552
549
  # @example
553
- # ```ruby
554
- # @driver = Appium::Driver.new(opts, false)
555
- # @driver.find_element :accessibility_id, zzz
556
- # ```
550
+ #
551
+ # @driver = Appium::Driver.new(opts, false)
552
+ # @driver.find_element :accessibility_id, zzz
557
553
  #
558
554
  # If you call `Appium.promote_appium_methods`, you can call `find_element` directly.
559
555
  #
@@ -586,16 +582,6 @@ module Appium
586
582
  driver_quit
587
583
  exit # exit pry
588
584
  end
589
-
590
- private
591
-
592
- # @private
593
- def write_session_id(session_id)
594
- File.open('/tmp/appium_lib_session', 'w') { |f| f.puts session_id }
595
- rescue IOError => e
596
- ::Appium::Logger.warn e
597
- nil
598
- end
599
585
  end # class Driver
600
586
  end # module Appium
601
587
 
@@ -1,5 +1,6 @@
1
1
  module Appium
2
2
  module Ios
3
+ # @private
3
4
  class UITestElementsPrinter < Nokogiri::XML::SAX::Document
4
5
  attr_accessor :filter
5
6
 
@@ -4,9 +4,32 @@ module Appium
4
4
  attr_reader :username
5
5
  # Access Key for use on Sauce Labs. Set `false` to disable Sauce, even when SAUCE_ACCESS_KEY is in ENV.
6
6
  attr_reader :access_key
7
- # Override the Sauce Appium endpoint to allow e.g. TestObject tests
7
+ # Override the Sauce Appium endpoint to allow e.g. TestObject tests. Default is 'ondemand.saucelabs.com:443/wd/hub'.
8
8
  attr_reader :endpoint
9
9
 
10
+ #
11
+ # Create a SauceLabs instance to manage sauce labs related attributes.
12
+ #
13
+ # @param [Hash] appium_lib_opts Appium library parameter
14
+ # @return [Appium::SauceLabs]
15
+ #
16
+ # @example
17
+ #
18
+ # opts_blank = {}
19
+ # sauce_labs_blank = Appium::SauceLabs.new(opts_blank)
20
+ # sauce_labs_blank.username #=> nil
21
+ # sauce_labs_blank.access_key #=> nil
22
+ # sauce_labs_blank.endpoint #=> "ondemand.saucelabs.com:443/wd/hub"
23
+ #
24
+ # opts = { sauce_username: "user-name",
25
+ # sauce_access_key: "access-key-to-sauce-labs",
26
+ # sauce_endpoint: "ondemand.other_saucelabs.com:443/wd/hub",
27
+ # }
28
+ # sauce_labs = Appium::SauceLabs.new(opts)
29
+ # sauce_labs.username #=> "user-name"
30
+ # sauce_labs.access_key #=> "access-key-to-sauce-labs"
31
+ # sauce_labs.endpoint #=> "ondemand.other-saucelabs.com:443/wd/hub"
32
+ #
10
33
  def initialize(appium_lib_opts)
11
34
  @username = appium_lib_opts.fetch :sauce_username, ENV['SAUCE_USERNAME']
12
35
  @username = nil if !@username || (@username.is_a?(String) && @username.empty?)
@@ -18,10 +41,28 @@ module Appium
18
41
  @endpoint = 'ondemand.saucelabs.com:443/wd/hub' if !@endpoint || (@endpoint.is_a?(String) && @endpoint.empty?)
19
42
  end
20
43
 
44
+ #
45
+ # Return true if an instance of Appium::SauceLabs has sauce_username and sauce_access_key.
46
+ # @return [Boolean]
47
+ #
48
+ # @example
49
+ #
50
+ # sauce_labs_blank.sauce_server_url? #=> false
51
+ # sauce_labs.sauce_server_url? #=> true
52
+ #
21
53
  def sauce_server_url?
22
54
  !username.nil? && !access_key.nil?
23
55
  end
24
56
 
57
+ #
58
+ # Return a particular server url to access to. Default is the local address.
59
+ # @return [String]
60
+ #
61
+ # @example
62
+ #
63
+ # sauce_labs_blank.server_url #=> "http://127.0.0.1:4723/wd/hub"
64
+ # sauce_labs.server_url #=> "https://user-name:access-key-to-sauce-labs@ondemand.other-saucelabs.com:443/wd/hub"
65
+ #
25
66
  def server_url
26
67
  sauce_server_url? ? "https://#{username}:#{access_key}@#{endpoint}" : 'http://127.0.0.1:4723/wd/hub'
27
68
  end
@@ -1,5 +1,5 @@
1
1
  module Appium
2
2
  # Version and Date are defined on the 'Appium' module, not 'Appium::Common'
3
- VERSION = '9.7.1'.freeze unless defined? ::Appium::VERSION
4
- DATE = '2017-10-01'.freeze unless defined? ::Appium::DATE
3
+ VERSION = '9.7.2'.freeze unless defined? ::Appium::VERSION
4
+ DATE = '2017-10-07'.freeze unless defined? ::Appium::DATE
5
5
  end
@@ -1,3 +1,9 @@
1
+ #### v9.7.1 2017-10-01
2
+
3
+ - [ebde85f](https://github.com/appium/ruby_lib/commit/ebde85fac616ac09e19a5f8215195e536d88344d) [Release 9 7 1 (#682)](https://github.com/appium/ruby_lib/issues/682)
4
+ - [db29b66](https://github.com/appium/ruby_lib/commit/db29b664172935f7814266c7357e099969404fe3) [fix: Fix appium version error (#681)](https://github.com/appium/ruby_lib/issues/681)
5
+
6
+
1
7
  #### v9.7.0 2017-10-01
2
8
 
3
9
  - [bf12459](https://github.com/appium/ruby_lib/commit/bf124597977514e4d338efaaea5a29bdcbef5578) [Release 9 7 0 (#679)](https://github.com/appium/ruby_lib/issues/679)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appium_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.7.1
4
+ version: 9.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - code@bootstraponline.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-01 00:00:00.000000000 Z
11
+ date: 2017-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver