selenium-webdriver 2.53.0 → 2.53.1

Sign up to get free protection for your applications and to get access to all the features.
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