selenium-webdriver 2.53.0 → 2.53.1

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.
data/CHANGES CHANGED
@@ -1,16 +1,16 @@
1
- 2.53.0 (2016-03-15)
1
+ 2.53.1 (2016-06-09)
2
+ ===================
3
+
4
+ Firefox:
5
+ * Support for latest geckodriver (formerly wires)
6
+ * Escape selector when converting to CSS (issue 2235)
7
+
8
+ 2.53.0 (2016-03-16)
2
9
  ===================
3
10
 
4
11
  Ruby:
5
12
  * Removed dependency on "multi_json" (issue 1632)
6
13
  * Properly handle namespaces in install manifest of Firefox add-ons (issue 1143)
7
- * Improve error handling when stopping browsers (thanks bsedat)
8
- * Fix deselecting options in select lists (thanks glib-briia)
9
- * Fix w3c error handling
10
- * Update w3c Capabilities support
11
-
12
- IE:
13
- * support for alert credentials (issue #1698, thanks Alan Baird & trabulmonkee)
14
14
 
15
15
  2.52.0 (2016-02-12)
16
16
  ===================
@@ -168,7 +168,8 @@ module Selenium
168
168
 
169
169
  binary_names.each do |binary_name|
170
170
  paths.each do |path|
171
- exe = File.join(path, binary_name)
171
+ exe = Dir.glob(File.join(path, binary_name)).first
172
+ next unless exe
172
173
  return exe if File.executable?(exe)
173
174
  end
174
175
  end
@@ -29,11 +29,11 @@ module Selenium
29
29
  SOCKET_LOCK_TIMEOUT = 45
30
30
  STOP_TIMEOUT = 5
31
31
  DEFAULT_PORT = 4444
32
- MISSING_TEXT = "Unable to find Mozilla Wires. Please download the executable from https://github.com/jgraham/wires/releases"
32
+ MISSING_TEXT = "Unable to find geckodriver. Please download the executable from https://github.com/mozilla/geckodriver/releases"
33
33
 
34
34
  def self.executable_path
35
35
  @executable_path ||= (
36
- path = Platform.find_binary "wires"
36
+ path = Platform.find_binary("geckodriver*") || Platform.find_binary("wires*")
37
37
  path or raise Error::WebDriverError, MISSING_TEXT
38
38
  Platform.assert_executable path
39
39
 
@@ -109,7 +109,7 @@ module Selenium
109
109
  @socket_poller = SocketPoller.new @host, @port, START_TIMEOUT
110
110
 
111
111
  unless @socket_poller.connected?
112
- raise Error::WebDriverError, "unable to connect to Mozilla Wires #{@host}:#{@port}"
112
+ raise Error::WebDriverError, "unable to connect to Mozilla geckodriver #{@host}:#{@port}"
113
113
  end
114
114
  end
115
115
 
@@ -599,13 +599,13 @@ module Selenium
599
599
  case how
600
600
  when 'class name'
601
601
  how = 'css selector'
602
- what = ".#{what}"
602
+ what = ".#{escape_css(what)}"
603
603
  when 'id'
604
604
  how = 'css selector'
605
- what = "##{what}"
605
+ what = "##{escape_css(what)}"
606
606
  when 'name'
607
607
  how = 'css selector'
608
- what = "*[name='#{what}']"
608
+ what = "*[name='#{escape_css(what)}']"
609
609
  when 'tag name'
610
610
  how = 'css selector'
611
611
  end
@@ -652,6 +652,20 @@ module Selenium
652
652
  @escaper ||= defined?(URI::Parser) ? URI::Parser.new : URI
653
653
  end
654
654
 
655
+ ESCAPE_CSS_REGEXP = /(['"\\#.:;,!?+<>=~*^$|%&@`{}\-\[\]\(\)])/
656
+ UNICODE_CODE_POINT = 30
657
+
658
+ # Escapes invalid characters in CSS selector.
659
+ # @see https://mathiasbynens.be/notes/css-escapes
660
+ def escape_css(string)
661
+ string = string.gsub(ESCAPE_CSS_REGEXP) { |match| "\\#{match}" }
662
+ if !string.empty? && string[0] =~ /[[:digit:]]/
663
+ string = "\\#{UNICODE_CODE_POINT + Integer(string[0])} #{string[1..-1]}"
664
+ end
665
+
666
+ string
667
+ end
668
+
655
669
  end # W3CBridge
656
670
  end # Remote
657
671
  end # WebDriver
@@ -32,15 +32,12 @@ module Selenium
32
32
  :platform_name => :any,
33
33
  :platform_version => :any,
34
34
  :accept_ssl_certs => false,
35
- :takes_screenshot => false,
36
- :takes_element_screenshot => false,
37
35
  :page_load_strategy => 'normal',
38
36
  :proxy => nil
39
37
  }
40
38
 
41
39
  KNOWN = [
42
40
  :remote_session_id,
43
- :specification_level,
44
41
  :xul_app_id,
45
42
  :raise_accessibility_exceptions,
46
43
  :rotatable,
@@ -113,8 +110,6 @@ module Selenium
113
110
  caps.platform_name = data.delete("platformName") if data.key? "platformName"
114
111
  caps.platform_version = data.delete("platformVersion") if data.key? "platformVersion"
115
112
  caps.accept_ssl_certs = data.delete("acceptSslCerts") if data.key? "acceptSslCerts"
116
- caps.takes_screenshot = data.delete("takesScreenshot") if data.key? "takesScreenshot"
117
- caps.takes_element_screenshot = data.delete("takesElementScreenshot") if data.key? "takesElementScreenshot"
118
113
  caps.page_load_strategy = data.delete("pageLoadStrategy") if data.key? "pageloadStrategy"
119
114
  proxy = data.delete('proxy')
120
115
  caps.proxy = Proxy.json_create(proxy) unless proxy.nil? || proxy.empty?
@@ -127,7 +122,6 @@ module Selenium
127
122
  data.delete('cssSelectorsEnabled')
128
123
 
129
124
  # Marionette Specific
130
- caps[:specification_level] = data.delete("specificationLevel")
131
125
  caps[:xul_app_id] = data.delete("XULappId")
132
126
  caps[:raise_accessibility_exceptions] = data.delete('raisesAccessibilityExceptions')
133
127
  caps[:rotatable] = data.delete('rotatable')
@@ -146,8 +140,6 @@ module Selenium
146
140
  # @option :platform_name [Symbol] one of :any, :win, :mac, or :x
147
141
  # @option :platform_version [String] required platform version number
148
142
  # @option :accept_ssl_certs [Boolean] does the driver accept SSL Cerfifications?
149
- # @option :takes_screenshot [Boolean] can this driver take screenshots?
150
- # @option :takes_element_screenshot [Boolean] can this driver take element screenshots?
151
143
  # @option :proxy [Selenium::WebDriver::Proxy, Hash] proxy configuration
152
144
  #
153
145
  # @api public
@@ -7,7 +7,7 @@ end
7
7
 
8
8
  Gem::Specification.new do |s|
9
9
  s.name = "selenium-webdriver"
10
- s.version = "2.53.0"
10
+ s.version = "2.53.1"
11
11
 
12
12
  s.authors = ["Jari Bakken"]
13
13
  s.email = "jari.bakken@gmail.com"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 2.53.0
5
+ version: 2.53.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jari Bakken
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2016-03-15 00:00:00 -05:00
13
+ date: 2016-06-09 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -118,7 +118,6 @@ extra_rdoc_files: []
118
118
  files:
119
119
  - CHANGES
120
120
  - Gemfile
121
- - Gemfile.lock
122
121
  - LICENSE
123
122
  - README.md
124
123
  - selenium-webdriver.gemspec
@@ -1,53 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- selenium-webdriver (2.53.0dev)
5
- childprocess (~> 0.5)
6
- rubyzip (~> 1.0)
7
- websocket (~> 1.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- addressable (2.4.0)
13
- builder (3.2.2)
14
- childprocess (0.5.9)
15
- ffi (~> 1.0, >= 1.0.11)
16
- ci_reporter (1.9.3)
17
- builder (>= 2.1.2)
18
- crack (0.4.2)
19
- safe_yaml (~> 1.0.0)
20
- diff-lcs (1.2.5)
21
- ffi (1.9.10)
22
- hashdiff (0.2.3)
23
- rack (1.6.4)
24
- rspec (2.99.0)
25
- rspec-core (~> 2.99.0)
26
- rspec-expectations (~> 2.99.0)
27
- rspec-mocks (~> 2.99.0)
28
- rspec-core (2.99.2)
29
- rspec-expectations (2.99.2)
30
- diff-lcs (>= 1.1.3, < 2.0)
31
- rspec-mocks (2.99.4)
32
- rubyzip (1.2.0)
33
- safe_yaml (1.0.4)
34
- webmock (1.22.3)
35
- addressable (>= 2.3.6)
36
- crack (>= 0.3.2)
37
- hashdiff
38
- websocket (1.2.2)
39
- yard (0.8.7.6)
40
-
41
- PLATFORMS
42
- ruby
43
-
44
- DEPENDENCIES
45
- ci_reporter (~> 1.6, >= 1.6.2)
46
- rack (~> 1.0)
47
- rspec (~> 2.99.0)
48
- selenium-webdriver!
49
- webmock (~> 1.7, >= 1.7.5)
50
- yard (~> 0.8.7)
51
-
52
- BUNDLED WITH
53
- 1.11.2