selenium-webdriver 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -424,7 +424,7 @@ function parseRequest(request) {
424
424
  var len = ChromeDriver.tabs.length;
425
425
  for (var i = 0; i < len; i++) {
426
426
  if (ChromeDriver.tabs[i].selected) {
427
- sendResponseToParsedRequest({statusCode: 0, value: ChromeDriver.tabs[i].id}, false);
427
+ sendResponseToParsedRequest({statusCode: 0, value: ChromeDriver.tabs[i].windowName}, false);
428
428
  }
429
429
  }
430
430
 
@@ -434,7 +434,7 @@ function parseRequest(request) {
434
434
  var len = ChromeDriver.tabs.length;
435
435
  for (var i = 0; i < len; i++) {
436
436
  if (ChromeDriver.tabs[i].tabId == tab.id) {
437
- sendResponseToParsedRequest({statusCode: 0, value: ChromeDriver.tabs[i].tabId}, false);
437
+ sendResponseToParsedRequest({statusCode: 0, value: ChromeDriver.tabs[i].windowName}, false);
438
438
  return;
439
439
  }
440
440
  }
@@ -442,7 +442,7 @@ function parseRequest(request) {
442
442
  });
443
443
  } else {
444
444
  // Wow. I can't see this being error prone in the slightest
445
- var handle = ChromeDriver.activePort.sender.tab.id;
445
+ var handle = ChromeDriver.windowHandlePrefix + "_" + ChromeDriver.activePort.sender.tab.id;
446
446
  sendResponseToParsedRequest({statusCode: 0, value: handle}, false);
447
447
  };
448
448
  break;
@@ -575,7 +575,7 @@ function parsePortMessage(message) {
575
575
  "Received response from content script: " + JSON.stringify(message));
576
576
  if (!message || !message.response || !message.response.value ||
577
577
  message.response.value.statusCode === undefined ||
578
- message.response.value.statusCode == null ||
578
+ message.response.value.statusCode === null ||
579
579
  message.sequenceNumber === undefined || message.sequenceNumber < ChromeDriver.lastReceivedSequenceNumber) {
580
580
  // Should only ever happen if we sent a bad request,
581
581
  // or the content script is broken
@@ -601,7 +601,7 @@ function parsePortMessage(message) {
601
601
  case 19: //org.openqa.selenium.XPathLookupException
602
602
  case 99: //org.openqa.selenium.WebDriverException [Native event]
603
603
  toSend = {statusCode: message.response.value.statusCode, value: null};
604
- if (message.response.value !== undefined && message.response.value != null &&
604
+ if (message.response.value !== undefined && message.response.value !== null &&
605
605
  message.response.value.value !== undefined) {
606
606
  toSend.value = message.response.value.value;
607
607
  }
@@ -779,9 +779,9 @@ function switchToFrame(name, index) {
779
779
  break;
780
780
  }
781
781
  }
782
- if (name !== undefined && name != null) {
782
+ if (name !== undefined && name !== null) {
783
783
  switchToFrameByName(name);
784
- } else if (index !== undefined && index != null) {
784
+ } else if (index !== undefined && index !== null) {
785
785
  getFrameNameFromIndex(index);
786
786
  } else {
787
787
  sendResponseToParsedRequest({
@@ -170,7 +170,7 @@ function parsePortMessage(message) {
170
170
  response.wait = false;
171
171
  break;
172
172
  case "getTitle":
173
- response.value = {statusCode: 0, value: ChromeDriverContentScript.currentDocument.title};
173
+ response.value = {statusCode: 0, value: Utils.trim(ChromeDriverContentScript.currentDocument.title)};
174
174
  response.wait = false;
175
175
  break;
176
176
  case "getCurrentUrl":
@@ -226,3 +226,6 @@ Utils.triggerMouseEvent = function(element, eventType, clientX, clientY) {
226
226
  execute_(script, args, function(){});
227
227
  };
228
228
 
229
+ Utils.trim = function(str) {
230
+ return str.replace(/^\s*/, "").replace(/\s*$/, "");
231
+ }
@@ -32,7 +32,15 @@ module Selenium
32
32
  if block_given?
33
33
  original = @bridge.getCurrentWindowHandle
34
34
  @bridge.switchToWindow id
35
+
35
36
  yield
37
+
38
+ current_handles = @bridge.getWindowHandles
39
+
40
+ if current_handles.size == 1
41
+ original = current_handles.shift
42
+ end
43
+
36
44
  @bridge.switchToWindow original
37
45
  else
38
46
  @bridge.switchToWindow id
@@ -16,6 +16,8 @@ module Selenium
16
16
  DEFAULT_PROFILE_NAME = "WebDriver".freeze
17
17
  DEFAULT_PORT = 7055
18
18
  DEFAULT_ENABLE_NATIVE_EVENTS = [:windows, :linux].include? Platform.os
19
+ DEFAULT_SECURE_SSL = false
20
+ DEFAULT_LOAD_NO_FOCUS_LIB = Platform.os == :linux
19
21
 
20
22
  end
21
23
  end
@@ -9,13 +9,18 @@ module Selenium
9
9
  SOCKET_LOCK_TIMEOUT = 45
10
10
 
11
11
 
12
- def initialize(binary, port = DEFAULT_PORT, profile_name = DEFAULT_PROFILE_NAME)
12
+ def initialize(binary, port = DEFAULT_PORT, profile = DEFAULT_PROFILE_NAME)
13
13
  @binary = binary
14
14
  @port = port.to_i
15
- @profile_name = profile_name
16
- @profile = nil
17
15
 
18
- # need to be really specific about what port to use
16
+ if profile.kind_of? Profile
17
+ @profile = profile
18
+ else
19
+ @profile_name = profile
20
+ @profile = nil
21
+ end
22
+
23
+ # need to be really specific about what host to use
19
24
  #
20
25
  # on os x, "localhost" will resolve to 3 different addresses (see /etc/hosts)
21
26
  # Ruby will loop over these and happily bind to the same port on each one,
@@ -69,16 +74,17 @@ module Selenium
69
74
  end
70
75
 
71
76
  def create_profile
72
- fetch_profile
73
-
74
- if @profile.nil?
75
- raise Error, WebDriverError, "could not find or create profile: #{profile.inspect}"
77
+ unless @profile
78
+ fetch_profile
79
+ if @profile.nil?
80
+ raise Error, WebDriverError, "could not find or create profile: #{profile.inspect}"
81
+ end
76
82
  end
77
83
 
78
84
  @profile.delete_extensions_cache
79
85
 
80
86
  @profile.port = @port
81
- @profile.add_extension(true)
87
+ @profile.add_webdriver_extension(true)
82
88
  @profile.update_user_prefs
83
89
  end
84
90
 
@@ -136,7 +142,7 @@ module Selenium
136
142
  raise "unable to find or create new profile" unless existing
137
143
  end
138
144
 
139
- @profile = existing.create_copy
145
+ @profile = existing
140
146
  end
141
147
 
142
148
  def assert_profile
@@ -32,7 +32,8 @@ module Selenium
32
32
  ]
33
33
 
34
34
  attr_reader :name, :directory
35
- attr_accessor :port, :secure_ssl, :native_events, :load_no_focus_lib
35
+ attr_writer :secure_ssl, :native_events, :load_no_focus_lib
36
+ attr_accessor :port
36
37
 
37
38
  class << self
38
39
 
@@ -47,17 +48,18 @@ module Selenium
47
48
  end
48
49
 
49
50
  def initialize(directory = nil)
50
- if directory
51
- @directory = directory
52
- else
53
- @directory = Dir.mktmpdir("webdriver-profile")
54
- end
51
+ @directory = directory ? create_tmp_copy(directory) : Dir.mktmpdir("webdriver-profile")
55
52
 
56
- unless File.directory?(@directory)
53
+ unless File.directory? @directory
57
54
  raise Error::WebDriverError, "Profile directory does not exist: #{@directory.inspect}"
58
55
  end
59
56
 
60
- @extension_source = DEFAULT_EXTENSION_SOURCE # make configurable?
57
+ # TODO: replace constants with options hash
58
+ @port = DEFAULT_PORT
59
+ @extension_source = DEFAULT_EXTENSION_SOURCE
60
+ @native_events = DEFAULT_ENABLE_NATIVE_EVENTS
61
+ @secure_ssl = DEFAULT_SECURE_SSL
62
+ @load_no_focus_lib = DEFAULT_LOAD_NO_FOCUS_LIB
61
63
  end
62
64
 
63
65
  def absolute_path
@@ -69,19 +71,19 @@ module Selenium
69
71
  end
70
72
 
71
73
  def update_user_prefs
72
- prefs = existing_user_prefs.merge DEFAULT_PREFERENCES
74
+ prefs = current_user_prefs.merge DEFAULT_PREFERENCES
73
75
  prefs['webdriver_firefox_port'] = @port
74
- prefs['webdriver_accept_untrusted_certs'] = 'true' unless @secure_ssl == true
76
+ prefs['webdriver_accept_untrusted_certs'] = 'true' unless secure_ssl?
75
77
  prefs['webdriver_enable_native_events'] = 'true' if native_events?
76
78
 
77
79
  write_prefs prefs
78
80
  end
79
81
 
80
- def add_extension(force = false)
82
+ def add_webdriver_extension(force_creation = false)
81
83
  ext_path = File.join(extensions_dir, EXTENSION_NAME)
82
84
 
83
85
  if File.exists?(ext_path)
84
- return unless force
86
+ return unless force_creation
85
87
  end
86
88
 
87
89
  FileUtils.rm_rf ext_path
@@ -103,7 +105,7 @@ module Selenium
103
105
  end
104
106
  end
105
107
 
106
- if Platform.os == :linux || load_no_focus_lib?
108
+ if load_no_focus_lib?
107
109
  from_to += NO_FOCUS
108
110
  modify_link_library_path(NO_FOCUS.map { |source, dest| File.join(ext_path, File.dirname(dest)) })
109
111
  end
@@ -117,20 +119,7 @@ module Selenium
117
119
  delete_extensions_cache
118
120
  end
119
121
 
120
- def create_copy
121
- tmp_directory = Dir.mktmpdir("webdriver-rb-profilecopy")
122
-
123
- # TODO: must be a better way..
124
- FileUtils.rm_rf tmp_directory
125
- FileUtils.mkdir_p File.dirname(tmp_directory), :mode => 0700
126
- FileUtils.cp_r @directory, tmp_directory
127
-
128
- Profile.new(tmp_directory)
129
- end
130
-
131
- def port
132
- @port ||= Firefox::DEFAULT_PORT
133
- end
122
+ # TODO: add_extension
134
123
 
135
124
  def extensions_dir
136
125
  @extensions_dir ||= File.join(directory, "extensions")
@@ -157,17 +146,32 @@ module Selenium
157
146
  end
158
147
 
159
148
  def native_events?
160
- !!(@native_events ||= Firefox::DEFAULT_ENABLE_NATIVE_EVENTS)
149
+ @native_events == true
161
150
  end
162
151
 
163
152
  def load_no_focus_lib?
164
- !!(@load_no_focus_lib ||= false)
153
+ @load_no_focus_lib == true
165
154
  end
166
155
 
156
+ def secure_ssl?
157
+ @secure_ssl == true
158
+ end
167
159
 
168
160
  private
169
161
 
170
- def existing_user_prefs
162
+ def create_tmp_copy(directory)
163
+ tmp_directory = Dir.mktmpdir("webdriver-rb-profilecopy")
164
+
165
+ # TODO: must be a better way..
166
+ FileUtils.rm_rf tmp_directory
167
+ FileUtils.mkdir_p File.dirname(tmp_directory), :mode => 0700
168
+ FileUtils.cp_r directory, tmp_directory
169
+
170
+ tmp_directory
171
+ end
172
+
173
+
174
+ def current_user_prefs
171
175
  return {} unless File.exist?(user_prefs_path)
172
176
 
173
177
  prefs = {}
@@ -4,24 +4,25 @@ module Selenium
4
4
  class ProfilesIni
5
5
 
6
6
  def initialize
7
- @path = File.join(Util.app_data_path, "profiles.ini")
8
- @profiles = {}
9
- parse if File.exist?(@path)
7
+ @ini_path = File.join(Util.app_data_path, "profiles.ini")
8
+ @profile_paths = {}
9
+
10
+ parse if File.exist?(@ini_path)
10
11
  end
11
12
 
12
13
  def [](name)
13
- @profiles[name]
14
+ Profile.new @profile_paths[name]
14
15
  end
15
16
 
16
17
  def refresh
17
- @profiles.clear
18
+ @profile_paths.clear
18
19
  parse
19
20
  end
20
21
 
21
22
  private
22
23
 
23
24
  def parse
24
- string = File.read @path
25
+ string = File.read @ini_path
25
26
  name = nil
26
27
  is_relative = nil
27
28
  path = nil
@@ -29,8 +30,8 @@ module Selenium
29
30
  string.split("\n").each do |line|
30
31
  case line
31
32
  when /^\[Profile/
32
- if p = new_profile(name, is_relative, path)
33
- @profiles[name] = p
33
+ if p = path_for(name, is_relative, path)
34
+ @profile_paths[name] = p
34
35
  name, path = nil
35
36
  end
36
37
  when /^Name=(.+)$/
@@ -42,16 +43,14 @@ module Selenium
42
43
  end
43
44
  end
44
45
 
45
- if p = new_profile(name, is_relative, path)
46
- @profiles[name] = p
46
+ if p = path_for(name, is_relative, path)
47
+ @profile_paths[name] = p
47
48
  end
48
49
  end
49
50
 
50
- def new_profile(name, is_relative, path)
51
+ def path_for(name, is_relative, path)
51
52
  return unless [name, path].any?
52
53
  path = is_relative ? File.join(Util.app_data_path, path) : path
53
-
54
- Profile.new(path)
55
54
  end
56
55
 
57
56
  end # ProfilesIni
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jari Bakken
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-03 00:00:00 +01:00
12
+ date: 2010-02-12 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency