selenium-webdriver 3.0.0.beta1 → 3.0.0.beta2

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,3 +1,10 @@
1
+ 3.0.0.beta2 (2016-08-02)
2
+ ===================
3
+
4
+ Firefox:
5
+ * Fixed bug with form submission
6
+ * Improved w3c element handling
7
+
1
8
  3.0.0.beta1 (2016-07-28)
2
9
  ===================
3
10
 
@@ -31,8 +31,9 @@ module Selenium
31
31
  when Array
32
32
  arg.map { |e| unwrap_script_result(e) }
33
33
  when Hash
34
- id = element_id_from(arg)
35
- return Element.new(self, id) if id
34
+ element_id = element_id_from(arg)
35
+ element_id = arg if self.is_a?(Remote::W3CBridge) && element_id
36
+ return Element.new(self, element_id) if element_id
36
37
  arg.each { |k, v| arg[k] = unwrap_script_result(v) }
37
38
  else
38
39
  arg
@@ -292,10 +292,7 @@ module Selenium
292
292
  #
293
293
 
294
294
  def as_json(*)
295
- {
296
- :ELEMENT => @id,
297
- 'element-6066-11e4-a52e-4f735466cecf' => @id
298
- }
295
+ @id.is_a?(Hash) ? @id : {:ELEMENT => @id}
299
296
  end
300
297
 
301
298
  private
@@ -30,7 +30,7 @@ module Selenium
30
30
  private
31
31
 
32
32
  def start_process
33
- server_command = [@executable_path, "--binary=#{Firefox::Binary.path}", "--webdriver-port=#{@port}", *@extra_args]
33
+ server_command = [@executable_path, "--binary=#{Firefox::Binary.path}", "--port=#{@port}", *@extra_args]
34
34
  @process = ChildProcess.build(*server_command)
35
35
 
36
36
  if $DEBUG
@@ -143,7 +143,7 @@ module Selenium
143
143
  caps.takes_screenshot = data.delete('takesScreenshot')
144
144
  caps.native_events = data.delete('nativeEvents')
145
145
  caps.rotatable = data.delete('rotatable')
146
- caps.proxy = Proxy.json_create(data['proxy']) if data.key?('proxy')
146
+ caps.proxy = Proxy.json_create(data['proxy']) if data.key?('proxy') && !data['proxy'].empty?
147
147
 
148
148
  # any remaining pairs will be added as is, with no conversion
149
149
  caps.merge!(data)
@@ -124,6 +124,9 @@ module Selenium
124
124
  end
125
125
 
126
126
  def create_session(desired_capabilities)
127
+ # TODO - Remove this when Mozilla fixes bug
128
+ desired_capabilities[:browser_name] = 'firefox' if desired_capabilities[:browser_name] == 'Firefox'
129
+
127
130
  resp = raw_execute :newSession, {}, {desiredCapabilities: desired_capabilities}
128
131
  @session_id = resp['sessionId']
129
132
  return W3CCapabilities.json_create resp['value'] if @session_id
@@ -396,7 +399,7 @@ module Selenium
396
399
  #
397
400
 
398
401
  def click_element(element)
399
- execute :elementClick, id: element
402
+ execute :elementClick, id: element.values.first
400
403
  end
401
404
 
402
405
  def click
@@ -436,21 +439,22 @@ module Selenium
436
439
 
437
440
  # TODO: - Implement file verification
438
441
  def send_keys_to_element(element, keys)
439
- execute :elementSendKeys, {id: element}, {value: keys.join('').split(//)}
442
+ execute :elementSendKeys, {id: element.values.first}, {value: keys.join('').split(//)}
440
443
  end
441
444
 
442
445
  def clear_element(element)
443
- execute :elementClear, id: element
446
+ execute :elementClear, id: element.values.first
444
447
  end
445
448
 
446
449
  def submit_element(element)
450
+ form = find_element_by('xpath', "./ancestor-or-self::form", element)
447
451
  execute_script("var e = arguments[0].ownerDocument.createEvent('Event');" \
448
452
  "e.initEvent('submit', true, true);" \
449
- 'if (arguments[0].dispatchEvent(e)) { arguments[0].submit() }', element)
453
+ 'if (arguments[0].dispatchEvent(e)) { arguments[0].submit() }', form.as_json)
450
454
  end
451
455
 
452
456
  def drag_element(element, right_by, down_by)
453
- execute :dragElement, {id: element}, {x: right_by, y: down_by}
457
+ execute :dragElement, {id: element.values.first}, {x: right_by, y: down_by}
454
458
  end
455
459
 
456
460
  def touch_single_tap(element)
@@ -511,23 +515,23 @@ module Selenium
511
515
  #
512
516
 
513
517
  def element_tag_name(element)
514
- execute :getElementTagName, id: element
518
+ execute :getElementTagName, id: element.values.first
515
519
  end
516
520
 
517
521
  def element_attribute(element, name)
518
- execute :getElementAttribute, id: element, name: name
522
+ execute :getElementAttribute, id: element.values.first, name: name
519
523
  end
520
524
 
521
525
  def element_value(element)
522
- execute :getElementProperty, id: element, name: 'value'
526
+ execute :getElementProperty, id: element.values.first, name: 'value'
523
527
  end
524
528
 
525
529
  def element_text(element)
526
- execute :getElementText, id: element
530
+ execute :getElementText, id: element.values.first
527
531
  end
528
532
 
529
533
  def element_location(element)
530
- data = execute :getElementRect, id: element
534
+ data = execute :getElementRect, id: element.values.first
531
535
 
532
536
  Point.new data['x'], data['y']
533
537
  end
@@ -538,27 +542,27 @@ module Selenium
538
542
  end
539
543
 
540
544
  def element_size(element)
541
- data = execute :getElementRect, id: element
545
+ data = execute :getElementRect, id: element.values.first
542
546
 
543
547
  Dimension.new data['width'], data['height']
544
548
  end
545
549
 
546
550
  def element_enabled?(element)
547
- execute :isElementEnabled, id: element
551
+ execute :isElementEnabled, id: element.values.first
548
552
  end
549
553
 
550
554
  def element_selected?(element)
551
- execute :isElementSelected, id: element
555
+ execute :isElementSelected, id: element.values.first
552
556
  end
553
557
 
554
558
  def element_displayed?(element)
555
559
  jwp = Selenium::WebDriver::Remote::Bridge::COMMANDS[:isElementDisplayed]
556
560
  self.class.command(:isElementDisplayed, jwp.first, jwp.last)
557
- execute :isElementDisplayed, id: element
561
+ execute :isElementDisplayed, id: element.values.first
558
562
  end
559
563
 
560
564
  def element_value_of_css_property(element, prop)
561
- execute :getElementCssValue, id: element, property_name: prop
565
+ execute :getElementCssValue, id: element.values.first, property_name: prop
562
566
  end
563
567
 
564
568
  #
@@ -575,19 +579,18 @@ module Selenium
575
579
  how, what = convert_locators(how, what)
576
580
 
577
581
  id = if parent
578
- execute :findChildElement, {id: parent}, {using: how, value: what}
582
+ execute :findChildElement, {id: parent.values.first}, {using: how, value: what}
579
583
  else
580
584
  execute :findElement, {}, {using: how, value: what}
581
585
  end
582
-
583
- Element.new self, element_id_from(id)
586
+ Element.new self, id
584
587
  end
585
588
 
586
589
  def find_elements_by(how, what, parent = nil)
587
590
  how, what = convert_locators(how, what)
588
591
 
589
592
  ids = if parent
590
- execute :findChildElements, {id: parent}, {using: how, value: what}
593
+ execute :findChildElements, {id: parent.values.first}, {using: how, value: what}
591
594
  else
592
595
  execute :findElements, {}, {using: how, value: what}
593
596
  end
@@ -5,7 +5,7 @@ raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = 'selenium-webdriver'
8
- s.version = '3.0.0.beta1'
8
+ s.version = '3.0.0.beta2'
9
9
 
10
10
  s.authors = ['Alex Rodionov', 'Titus Fortner']
11
11
  s.email = ['p0deje@gmail.com', 'titusfortner@gmail.com']
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 3.0.0.beta1
5
+ version: 3.0.0.beta2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Alex Rodionov
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2016-07-28 00:00:00 -05:00
14
+ date: 2016-08-02 00:00:00 -05:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency