selwet 1.0.2 → 1.0.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/selwet.rb +99 -46
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36cab4eaa1bb6cadd243cbed72cd8f24085f48ae
4
- data.tar.gz: 7533d95c91fad7bc6a1d1a9165ca5a54e24e887d
3
+ metadata.gz: 3de1654c6b1591759f40cb79d967cf19b716818c
4
+ data.tar.gz: be45611e7b10d40e2278efb1e56e94e2e235789f
5
5
  SHA512:
6
- metadata.gz: 371974fc8d1f0ee692edf3bc8349d3e3d35dec7c7f1f8540e4789a8f0169642cd562737382a1bd17e09c96bdfc916989709e0dd30e00225848e1925163ece9e3
7
- data.tar.gz: 3fe32defa379b41c1e5546a213f413e52005f367bfd015e30d5c817d8e973ff801455c63028b9b3a3619d91718ae75cddcd5bbc33c2a64a6bf2de49f2e78690b
6
+ metadata.gz: 26329edbd23d986c460c9375f16b8c2fa00b0a773399a720aa0b6384e433f7f1383ed85f23ed64a563616f10eafec36fe31d46a15568866928180e637a4dee42
7
+ data.tar.gz: 7892b699ee0af75c09d79773a76f5b1f2ac1d2f00f340936146798bb371e905a8e4fc6f9d3ff5d4e58ab7f3d91a00e10c9eace405bb957e0c8e12fdc6333052b
@@ -50,6 +50,15 @@ module SelWeT
50
50
  class ElementIsMissingError < Error
51
51
  end
52
52
 
53
+ class ConnectionRefusedError < Error
54
+ end
55
+
56
+ class PageLoadError < Error
57
+ end
58
+
59
+ class ElementIsNotDisplayedError < Error
60
+ end
61
+
53
62
  class << self
54
63
  #Кликает на кнопку 'Cancel' в окне алерта.
55
64
  #@example
@@ -153,22 +162,35 @@ module SelWeT
153
162
  # ...
154
163
  #@see alert_ok
155
164
  #@see alert_cancel
156
- def click selector, desc = nil
165
+
166
+
167
+ def click selector, desc = nil
157
168
  raise(ArgumentValueError, "Invalid value \"#{selector}\" of argument 'selector'") unless selector.class == String
158
169
  raise(ArgumentValueError, "Invalid value \"#{desc}\" of argument 'desc'") unless [String, NilClass].include?(desc.class)
159
- if check_element(selector)
160
- element = @@driver.find_element(:css => selector)
161
- raise "Element \"#{selector}\" is not displayed!" unless element.displayed?
162
- wait = Selenium::WebDriver::Wait.new
163
- element.click
164
- if (@@browser == :chrome)
165
- sleep 1
166
- end
167
- wait.until { @@driver.execute_script("return window.onunload = function(){return window.onload}; ") }
168
- else
169
- raise(ElementIsMissingError, desc ? "Element #{desc} is missing" :"Element #{selector} is missing")
170
- end
170
+ i = 0
171
+ if (check_element(selector))
172
+ begin
173
+ element = @@driver.find_element(:css => selector)
174
+ raise(ElementIsNotDisplayedError, "Element \"#{selector}\" is not displayed") unless displayed?(selector)
175
+ element.click
176
+ if (@@browser == :chrome)
177
+ sleep 1
178
+ end
179
+ wait = Selenium::WebDriver::Wait.new
180
+ wait.until { @@driver.execute_script("return window.onunload = function(){return window.onload}; ") }
181
+ rescue ElementIsNotDisplayedError
182
+ i = i + 1
183
+ if i <= 2
184
+ sleep @@timewait
185
+ retry
186
+ else
187
+ raise(ElementIsNotDisplayedError, "Element \"#{selector}\" is not displayed") unless displayed?(selector)
188
+ end
189
+ end
190
+ end
171
191
  end
192
+
193
+
172
194
  #Закрыть окно с номером num. Окна нумируются в порядке их открытия. Нумирация начинается с 0. Если необходимо закрыть текущее окно, то перед закрытием необходимо переключиться на другое окно. После закрытия окна происходить их переупорядочивание. Так, например, если было закрыто первое окно (num = 0), то второе окно станет первым (было num = 1, стало num = 0) и т.д.
173
195
  #@param num [Fixnum] номер окна
174
196
  #@example
@@ -230,18 +252,30 @@ module SelWeT
230
252
  def fill_in selector, value
231
253
  raise(ArgumentValueError, "Invalid value \"#{selector}\" of argument 'selector'") unless selector.class == String
232
254
  raise(ArgumentValueError, "Invalid value \"#{value}\" of argument 'value'") unless value.class == String
255
+ i = 0
233
256
  if check_element(selector)
234
- element = @@driver.find_element(:css => selector)
235
- raise "Element \"#{selector}\" not displayed!" unless element.displayed?
236
- begin
237
- @@driver.action.move_to(element).perform
238
- element.clear
239
- rescue
257
+ begin
258
+ element = @@driver.find_element(:css => selector)
259
+ raise(ElementIsNotDisplayedError, "Element \"#{selector}\" is not displayed") unless displayed?(selector)
260
+ begin
261
+ @@driver.action.move_to(element).perform
262
+ element.clear
263
+ rescue
240
264
  #skip this
241
- end
242
- element.send_keys(value)
265
+ end
266
+ element.send_keys(value)
267
+ rescue ElementIsNotDisplayedError
268
+ i = i + 1
269
+ if i <= 2
270
+ sleep @@timewait
271
+ retry
272
+ else
273
+ raise(ElementIsNotDisplayedError, "Element \"#{selector}\" is not displayed") unless displayed?(selector)
274
+ end
275
+ end
276
+
243
277
  else
244
- raise(ElementIsMissingError, "Element #{selector} is missing")
278
+ raise(ElementIsMissingError, "Element #{selector} is missing")
245
279
  end
246
280
  end
247
281
  #Навести курсор на элемент.
@@ -348,17 +382,26 @@ module SelWeT
348
382
  # end
349
383
  # ...
350
384
  #@see refresh
351
-
352
385
  def go_to url
353
386
  raise(ArgumentValueError, "Invalid value of argument 'selector'") unless url.class == String
354
387
  wait = Selenium::WebDriver::Wait.new
355
- @@driver.navigate.to url
356
- if (@@browser == :chrome)
388
+ i = 0
389
+ begin
390
+ @@driver.navigate.to url
391
+ if (@@browser == :chrome)
357
392
  sleep 1
393
+ end
394
+ wait.until { @@driver.execute_script("return window.onload = function(){}; ") }
395
+ i = i + 1
396
+ rescue Exception => e
397
+ if i <= 2
398
+ @@driver.navigate.refresh
399
+ retry
400
+ else
401
+ raise(PageLoadError, "Page #{url} didn't load within PageLoadTimeOut time")
402
+ end
358
403
  end
359
- wait.until { @@driver.execute_script("return window.onload = function(){}; ") }
360
- end
361
-
404
+ end
362
405
  #Проверяет, открыто ли окно с номером num.
363
406
  #@param num [Fixnum] номер окна
364
407
  #@return [FalseClass/TrueClass]
@@ -502,25 +545,35 @@ module SelWeT
502
545
  #Запускает браузер перед выполнением тестов.
503
546
  #Выполняется автоматически непосредственно перед запуском тестов.
504
547
  def startup
505
- @@driver = nil
506
- url = nil
507
- unless @@server_url
508
- puts 'URL not specified! Local browser will be used.'
509
- else
510
- url = @@server_url
511
- end
512
- if @@browser.nil?
513
- raise ArgumentError.new('Browser not specified!')
514
- end
515
- if url
516
- if @@browser == :phantomjs
517
- @@driver = Selenium::WebDriver.for(:remote, :url => url)
518
- else
519
- @@driver = Selenium::WebDriver.for(:remote, :desired_capabilities => @@browser, :url => url)
520
- end
521
- else
522
- @@driver = Selenium::WebDriver.for @@browser
548
+ begin
549
+ @@driver = nil
550
+ url = nil
551
+ unless @@server_url
552
+ puts 'URL not specified! Local browser will be used.'
553
+ else
554
+ url = @@server_url
555
+ end
556
+ if @@browser.nil?
557
+ raise ArgumentError.new('Browser not specified!')
558
+ end
559
+ if url
560
+ if @@browser == :phantomjs
561
+ @@driver = Selenium::WebDriver.for(:remote, :url => url)
562
+ else
563
+ @@driver = Selenium::WebDriver.for(:remote, :desired_capabilities => @@browser, :url => url)
564
+ end
565
+ else
566
+ @@driver = Selenium::WebDriver.for @@browser
567
+ end
568
+
569
+ if (@@driver == nil)
570
+ raise("Can't create driver for #{@@browser.to_s}")
571
+ end
572
+
573
+ rescue Errno::ECONNREFUSED
574
+ raise(ConnectionRefusedError, "Connection refused on #{@@server_url}\n\n")
523
575
  end
576
+
524
577
  @@driver.manage.timeouts.implicit_wait = @@timewait
525
578
  @@driver.manage.timeouts.script_timeout = @@timewait
526
579
  @@driver.manage.timeouts.page_load = @@pageload_timewait
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selwet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Motin Artem
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-16 00:00:00.000000000 Z
11
+ date: 2015-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -105,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  version: '0'
106
106
  requirements: []
107
107
  rubyforge_project:
108
- rubygems_version: 2.4.5
108
+ rubygems_version: 2.4.8
109
109
  signing_key:
110
110
  specification_version: 4
111
111
  summary: Selenium Web Test