appium_lib 9.7.1 → 9.7.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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