bucky-core 0.9.12 → 0.9.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 13cebeab73b7e81980d36a07515ac17fb040eea9
4
- data.tar.gz: 407b0fc24a25d52ce5977fa2a63e2c7b5a5b1021
3
+ metadata.gz: 2b9ddfb233321416ab533a5e156cd947f0d5e44b
4
+ data.tar.gz: d2eb7b14ed2c76e537312f701fe93ae45bfb4b43
5
5
  SHA512:
6
- metadata.gz: 2c49d372f9e4a36a81daaf07fe7309caf7286e5dbbfd6ad4094bc29eaded54f4bf51c1ed84ad3813858b974c5cbcd63729d87438ebe3b881a76c779ee69ba1b1
7
- data.tar.gz: 65ba083425e8b97bc0e59486c3663e8e293c1add4cb1e4cd89749dea1333e078e79bd40bb73235122ae020631e90784ad35eb07207b7e315b65690e731ee8811
6
+ metadata.gz: 13028e8366556af56000d2f0a96b3b4c523a7b6ff4e62e98fd6147d33bee5100f35742e6f232d5394435e3a0e446fd434cc36b73bd56796619ed0c94c53d17da
7
+ data.tar.gz: f0350162e227a603748e2371f69656bb3be679e07bdaba669843613f9b7925a6a260a3aed39d07b65f4c7c9f13c562b750ee1e4dfdcae42989d231468686dede
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bucky-core (0.9.9)
4
+ bucky-core (0.9.11)
5
5
  color_echo (~> 3.1)
6
6
  json (~> 2.1)
7
7
  nokogiri (~> 1.8)
@@ -2,11 +2,14 @@
2
2
 
3
3
  require_relative '../../utils/yaml_load'
4
4
  require_relative '../../core/exception/bucky_exception'
5
+ require_relative '../selenium_handler/wait_handler'
6
+
5
7
  module Bucky
6
8
  module TestEquipment
7
9
  module PageObject
8
10
  class BasePageObject
9
11
  include Bucky::Utils::YamlLoad
12
+ include Bucky::TestEquipment::SeleniumHandler::WaitHandler
10
13
 
11
14
  # https://seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/SearchContext.html#find_element-instance_method
12
15
  FINDERS = {
@@ -52,7 +55,8 @@ module Bucky
52
55
  method_name = method.downcase.to_sym
53
56
  raise StandardError, "Invalid finder. #{method_name}" unless FINDERS.key? method_name
54
57
 
55
- elements = @driver.find_elements(method_name, value)
58
+ # wait until driver find element
59
+ elements = wait_until_helper(3, 0.1, Selenium::WebDriver::Error::NoSuchElementError) { @driver.find_elements(method_name, value) }
56
60
  raise_if_elements_empty(elements, method_name, value)
57
61
 
58
62
  get_element_or_attribute = lambda do |elems, arg|
@@ -67,7 +71,7 @@ module Bucky
67
71
 
68
72
  elements.first.instance_eval do
69
73
  define_singleton_method('[]') { |arg| get_element_or_attribute.call(elements, arg) }
70
- %w[each length].each { |m| define_singleton_method(m) { elements.send(m) } }
74
+ %w[each length].each { |m| define_singleton_method(m) { |&block| elements.send(m, &block) } }
71
75
  end
72
76
 
73
77
  elements.first
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'selenium-webdriver'
4
+ require 'English'
5
+
6
+ module Bucky
7
+ module TestEquipment
8
+ module SeleniumHandler
9
+ module WaitHandler
10
+ module_function
11
+
12
+ def wait_until_helper(timeout, interval, ignore, &block)
13
+ wait = Selenium::WebDriver::Wait.new(timeout: timeout, interval: interval, ignore: [ignore])
14
+ wait.until { block.call }
15
+ rescue Selenium::WebDriver::Error::TimeoutError
16
+ raise ignore, "Wait until the limit times for #{caller[1][/`([^']*)'/, 1]}\n #{$ERROR_INFO.message}"
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,9 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../selenium_handler/wait_handler'
4
+
3
5
  module Bucky
4
6
  module TestEquipment
5
7
  module UserOperation
6
8
  class UserOperationHelper
9
+ include Bucky::TestEquipment::SeleniumHandler::WaitHandler
10
+
7
11
  def initialize(args)
8
12
  @app = args[:app]
9
13
  @device = args[:device]
@@ -33,8 +37,8 @@ module Bucky
33
37
  def click(args)
34
38
  elem = @pages.get_part(args)
35
39
  elem.location_once_scrolled_into_view
36
- sleep 1
37
- elem.click
40
+ # when click successfully, return of click is nil.
41
+ wait_until_helper(5, 0.1, Selenium::WebDriver::Error::WebDriverError) { elem.click.nil? }
38
42
  end
39
43
 
40
44
  def refresh(_)
@@ -50,14 +54,8 @@ module Bucky
50
54
  end
51
55
 
52
56
  def switch_to_the_window(args)
53
- # change ignore condition, NoSuchElementError to NoSuchWindowError
54
- wait = Selenium::WebDriver::Wait.new(:timeout => 1, :interval => 0.1, :ignore => [Selenium::WebDriver::Error::NoSuchWindowError])
55
- begin
56
- # when the window successfully switched, return of switch_to.window is nil.
57
- wait.until{ @driver.switch_to.window(args[:window_name]).nil? }
58
- rescue Selenium::WebDriver::Error::TimeoutError
59
- raise Selenium::WebDriver::Error::TimeoutError, "Exceeded the limit for trying switch_to_the_window.\n #{$ERROR_INFO.message}"
60
- end
57
+ # when the window successfully switched, return of switch_to.window is nil.
58
+ wait_until_helper(5, 0.1, Selenium::WebDriver::Error::NoSuchWindowError) { @driver.switch_to.window(args[:window_name]).nil? }
61
59
  end
62
60
 
63
61
  # Close window
@@ -71,7 +69,7 @@ module Bucky
71
69
  end
72
70
 
73
71
  def choose(args)
74
- option = Selenium::WebDriver::Support::Select.new(@pages.get_part(args))
72
+ option = wait_until_helper(5, 0.1, Selenium::WebDriver::Error::StaleElementReferenceError) { Selenium::WebDriver::Support::Select.new(@pages.get_part(args)) }
75
73
  if args.key?(:text)
76
74
  type = :text
77
75
  selected = args[type].to_s
@@ -89,8 +87,8 @@ module Bucky
89
87
 
90
88
  # Alert accept
91
89
  def accept_alert(_)
92
- a = @driver.switch_to.alert
93
- a.accept
90
+ alert = wait_until_helper(5, 0.1, Selenium::WebDriver::Error::NoAlertPresentError) { @driver.switch_to.alert }
91
+ alert.accept
94
92
  end
95
93
 
96
94
  def wait(args)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Bucky
4
4
  module Version
5
- VERSION = '0.9.12'
5
+ VERSION = '0.9.13'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bucky-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.12
4
+ version: 0.9.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - NaotoKishino
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: exe
15
15
  cert_chain: []
16
- date: 2019-07-09 00:00:00.000000000 Z
16
+ date: 2019-07-12 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: awesome_print
@@ -364,6 +364,7 @@ files:
364
364
  - lib/bucky/test_equipment/evidence/evidence_generator.rb
365
365
  - lib/bucky/test_equipment/pageobject/base_pageobject.rb
366
366
  - lib/bucky/test_equipment/pageobject/pages.rb
367
+ - lib/bucky/test_equipment/selenium_handler/wait_handler.rb
367
368
  - lib/bucky/test_equipment/selenium_handler/webdriver_handler.rb
368
369
  - lib/bucky/test_equipment/test_case/abst_test_case.rb
369
370
  - lib/bucky/test_equipment/test_case/e2e_test_case.rb