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.
- checksums.yaml +4 -4
- data/lib/selwet.rb +99 -46
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3de1654c6b1591759f40cb79d967cf19b716818c
|
4
|
+
data.tar.gz: be45611e7b10d40e2278efb1e56e94e2e235789f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26329edbd23d986c460c9375f16b8c2fa00b0a773399a720aa0b6384e433f7f1383ed85f23ed64a563616f10eafec36fe31d46a15568866928180e637a4dee42
|
7
|
+
data.tar.gz: 7892b699ee0af75c09d79773a76f5b1f2ac1d2f00f340936146798bb371e905a8e4fc6f9d3ff5d4e58ab7f3d91a00e10c9eace405bb957e0c8e12fdc6333052b
|
data/lib/selwet.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
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
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
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
|
-
|
242
|
-
|
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
|
-
|
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
|
-
|
356
|
-
|
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
|
-
|
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
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
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.
|
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-
|
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.
|
108
|
+
rubygems_version: 2.4.8
|
109
109
|
signing_key:
|
110
110
|
specification_version: 4
|
111
111
|
summary: Selenium Web Test
|