watir-scroll 0.3.0 → 0.4.0
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/README.md +17 -0
- data/lib/watir-scroll/browser/scroll.rb +12 -1
- data/lib/watir-scroll/element/scroll.rb +15 -3
- data/spec/watir-scroll/browser_spec.rb +7 -1
- data/spec/watir-scroll/element_spec.rb +14 -0
- data/watir-scroll.gemspec +1 -1
- 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: 5e8291e46790f58afdf548a985a2c7295aa969b3
|
4
|
+
data.tar.gz: 5c9539242ff3222ea90a5a41eaefd8f14090e9fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61629d89d7a642a9b001c2c9c0343e7dc0cc2fd19a0a671b1eb12abecd0e1b1b2d389ed10f48dbce04a09ba25e57afc69e15267a56ca1d9de5d40b19ee68b579
|
7
|
+
data.tar.gz: 41f383d3058e8f9677d0b53f68f3708c8519a646db3f55deeaa73cdc33705f36f15243b0fc645fac3207722fb2649c9c3b6b586db06988502ff1d7541fc41c46
|
data/README.md
CHANGED
@@ -31,6 +31,14 @@ browser.scroll.to :top # scrolls to the top of the page
|
|
31
31
|
browser.scroll.to :center # scrolls to the center of the page
|
32
32
|
browser.scroll.to :bottom # scrolls to the bottom of the page
|
33
33
|
browser.scroll.to [10, 10] # scrolls to coordinates x and y
|
34
|
+
browser.scroll.by 10, 10 # scrolls to left and down by 10 pixels
|
35
|
+
browser.scroll.by -10, -10 # scrolls to right and top by 10 pixels
|
36
|
+
```
|
37
|
+
|
38
|
+
You can also chain the calls:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
browser.scroll.to(:top).by(0, 100) # scrolls to the top of the page and 100 pixels down
|
34
42
|
```
|
35
43
|
|
36
44
|
### Scrolling To Elements
|
@@ -42,8 +50,17 @@ button = browser.button(text: 'Click')
|
|
42
50
|
button.scroll.to # scrolls element to the top
|
43
51
|
button.scroll.to :center # scrolls element to the center
|
44
52
|
button.scroll.to :bottom # scrolls element to the bottom
|
53
|
+
button.scroll.by 10, 10 # scrolls to left and down by 10 pixels
|
54
|
+
button.scroll.by -10, -10 # scrolls to right and top by 10 pixels
|
45
55
|
```
|
46
56
|
|
57
|
+
You can also chain the calls:
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
button.scroll.to.by(0, 100) # scrolls to the button and 100 pixels down
|
61
|
+
```
|
62
|
+
|
63
|
+
|
47
64
|
## Contributing
|
48
65
|
|
49
66
|
1. Fork it
|
@@ -23,8 +23,19 @@ module Watir
|
|
23
23
|
else
|
24
24
|
raise ArgumentError, "Don't know how to scroll to: #{param}!"
|
25
25
|
end
|
26
|
+
@browser.execute_script(*args)
|
26
27
|
|
27
|
-
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# Scrolls by offset.
|
33
|
+
# @param [Fixnum] left Horizontal offset
|
34
|
+
# @param [Fixnum] top Vertical offset
|
35
|
+
#
|
36
|
+
def by(left, top)
|
37
|
+
@browser.execute_script('window.scrollBy(arguments[0], arguments[1]);', Integer(left), Integer(top))
|
38
|
+
self
|
28
39
|
end
|
29
40
|
|
30
41
|
end # Scroll
|
@@ -16,9 +16,10 @@ module Watir
|
|
16
16
|
['arguments[0].scrollIntoView();', @element]
|
17
17
|
when :center
|
18
18
|
script = <<-JS
|
19
|
+
var bodyRect = document.body.getBoundingClientRect();
|
19
20
|
var elementRect = arguments[0].getBoundingClientRect();
|
20
|
-
var
|
21
|
-
var
|
21
|
+
var left = (elementRect.left - bodyRect.left) - (window.innerWidth / 2);
|
22
|
+
var top = (elementRect.top - bodyRect.top) - (window.innerHeight / 2);
|
22
23
|
window.scrollTo(left, top);
|
23
24
|
JS
|
24
25
|
[script, @element]
|
@@ -27,8 +28,19 @@ module Watir
|
|
27
28
|
else
|
28
29
|
raise ArgumentError, "Don't know how to scroll element to: #{param}!"
|
29
30
|
end
|
30
|
-
|
31
31
|
@element.browser.execute_script(*args)
|
32
|
+
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Scrolls by offset.
|
38
|
+
# @param [Fixnum] left Horizontal offset
|
39
|
+
# @param [Fixnum] top Vertical offset
|
40
|
+
#
|
41
|
+
def by(left, top)
|
42
|
+
@element.execute_script('window.scrollBy(arguments[0], arguments[1]);', Integer(left), Integer(top))
|
43
|
+
self
|
32
44
|
end
|
33
45
|
|
34
46
|
end # Scroll
|
@@ -24,12 +24,18 @@ describe Watir::Browser do
|
|
24
24
|
expect(visible?(@browser.button(text: 'Bottom'))).to eq(true)
|
25
25
|
end
|
26
26
|
|
27
|
-
it "scrolls to
|
27
|
+
it "scrolls to coordinates" do
|
28
28
|
button = @browser.button(text: 'Bottom')
|
29
29
|
@browser.scroll.to [button.wd.location.x, button.wd.location.y]
|
30
30
|
expect(visible?(button)).to eq(true)
|
31
31
|
end
|
32
32
|
|
33
|
+
it "scrolls by offset" do
|
34
|
+
button = @browser.button(text: 'Bottom')
|
35
|
+
@browser.scroll.by(0, button.wd.location.y)
|
36
|
+
expect(visible?(button)).to eq(true)
|
37
|
+
end
|
38
|
+
|
33
39
|
it "raises error when scroll point is not vaild" do
|
34
40
|
expect { @browser.scroll.to(:blah) }.to raise_error(ArgumentError)
|
35
41
|
end
|
@@ -23,6 +23,20 @@ describe Watir::Element do
|
|
23
23
|
expect(visible?(@browser.button(text: 'Bottom'))).to eq(false)
|
24
24
|
end
|
25
25
|
|
26
|
+
it "scrolls to element multiple times" do
|
27
|
+
2.times do
|
28
|
+
@browser.button(text: 'Center').scroll.to(:center)
|
29
|
+
expect(visible?(@browser.button(text: 'Top'))).to eq(false)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "scrolls by offset" do
|
34
|
+
@browser.button(text: 'Bottom').scroll.to.by(-10000, -10000) # simulate scrolling to top
|
35
|
+
expect(visible?(@browser.button(text: 'Top'))).to eq(true)
|
36
|
+
expect(visible?(@browser.button(text: 'Center'))).to eq(true)
|
37
|
+
expect(visible?(@browser.button(text: 'Bottom'))).to eq(false)
|
38
|
+
end
|
39
|
+
|
26
40
|
it "raises error when scroll param is not vaild" do
|
27
41
|
expect { @browser.button(text: 'Top').scroll.to(:blah) }.to raise_error(ArgumentError)
|
28
42
|
end
|
data/watir-scroll.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "watir-scroll"
|
7
|
-
spec.version = "0.
|
7
|
+
spec.version = "0.4.0"
|
8
8
|
spec.authors = "Alex Rodionov"
|
9
9
|
spec.email = "p0deje@gmail.com"
|
10
10
|
spec.description = "Scrolling API for Watir"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir-scroll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rodionov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: watir
|
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
123
|
version: '0'
|
124
124
|
requirements: []
|
125
125
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.6.13
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: Scrolling API for Watir
|