selenium-webdriver 3.0.0-beta-1 → 3.0.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.
- package/CHANGES.md +109 -0
- package/LICENSE +1 -1
- package/README.md +7 -6
- package/chrome.js +31 -128
- package/edge.js +13 -91
- package/example/chrome_android.js +18 -13
- package/example/chrome_mobile_emulation.js +19 -15
- package/example/google_search.js +11 -11
- package/example/google_search_generator.js +23 -18
- package/example/google_search_test.js +31 -17
- package/example/logging.js +9 -17
- package/example/parallel_flows.js +3 -0
- package/firefox/binary.js +17 -0
- package/firefox/index.js +198 -101
- package/firefox/profile.js +24 -3
- package/http/util.js +95 -59
- package/ie.js +6 -10
- package/index.js +636 -2
- package/lib/actions.js +18 -10
- package/lib/atoms/getAttribute.js +11 -0
- package/lib/atoms/isDisplayed.js +106 -0
- package/lib/firefox/amd64/libnoblur64.so +0 -0
- package/lib/firefox/i386/libnoblur.so +0 -0
- package/lib/firefox/webdriver.xpi +0 -0
- package/lib/http.js +159 -46
- package/lib/logging.js +7 -1
- package/lib/promise.js +602 -358
- package/lib/proxy.js +28 -0
- package/lib/session.js +1 -1
- package/lib/test/build.js +26 -28
- package/lib/test/data/formPage.html +1 -0
- package/lib/test/fileserver.js +12 -10
- package/lib/test/httpserver.js +4 -6
- package/lib/test/index.js +18 -11
- package/lib/test/promise.js +79 -0
- package/lib/webdriver.js +587 -479
- package/opera.js +12 -88
- package/package.json +13 -14
- package/phantomjs.js +7 -14
- package/remote/index.js +201 -30
- package/safari.js +62 -416
- package/test/actions_test.js +9 -11
- package/test/chrome/options_test.js +8 -8
- package/test/chrome/service_test.js +2 -2
- package/test/cookie_test.js +57 -57
- package/test/element_finding_test.js +201 -185
- package/test/execute_script_test.js +108 -111
- package/test/fingerprint_test.js +16 -11
- package/test/firefox/firefox_test.js +75 -49
- package/test/firefox/profile_test.js +1 -3
- package/test/http/util_test.js +21 -27
- package/test/io_test.js +2 -5
- package/test/lib/http_test.js +8 -6
- package/test/lib/promise_aplus_test.js +48 -44
- package/test/lib/promise_error_test.js +687 -611
- package/test/lib/promise_flow_test.js +1810 -1806
- package/test/lib/promise_generator_test.js +227 -225
- package/test/lib/promise_test.js +864 -835
- package/test/lib/until_test.js +1 -1
- package/test/lib/webdriver_test.js +520 -424
- package/test/logging_test.js +43 -45
- package/test/net/portprober_test.js +23 -24
- package/test/page_loading_test.js +84 -78
- package/test/phantomjs/execute_phantomjs_test.js +11 -25
- package/test/proxy_test.js +23 -23
- package/test/remote_test.js +22 -22
- package/test/safari_test.js +108 -0
- package/test/session_test.js +11 -10
- package/test/stale_element_test.js +18 -16
- package/test/tag_name_test.js +7 -5
- package/test/testing/assert_test.js +2 -3
- package/test/testing/index_test.js +163 -117
- package/test/upload_test.js +13 -13
- package/test/window_test.js +94 -70
- package/testing/index.js +176 -37
- package/builder.js +0 -553
- package/lib/safari/client.js +0 -56
package/test/logging_test.js
CHANGED
|
@@ -40,125 +40,123 @@ test.suite(function(env) {
|
|
|
40
40
|
driver = null;
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
test.afterEach(function() {
|
|
43
|
+
test.afterEach(function*() {
|
|
44
44
|
if (driver) {
|
|
45
|
-
driver.quit();
|
|
45
|
+
return driver.quit();
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
test.it('can be disabled', function() {
|
|
49
|
+
test.it('can be disabled', function*() {
|
|
50
50
|
var prefs = new logging.Preferences();
|
|
51
51
|
prefs.setLevel(logging.Type.BROWSER, logging.Level.OFF);
|
|
52
52
|
|
|
53
|
-
driver = env.builder()
|
|
53
|
+
driver = yield env.builder()
|
|
54
54
|
.setLoggingPrefs(prefs)
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
driver.get(dataUrl(
|
|
57
|
+
yield driver.get(dataUrl(
|
|
58
58
|
'<!DOCTYPE html><script>',
|
|
59
59
|
'console.info("hello");',
|
|
60
60
|
'console.warn("this is a warning");',
|
|
61
61
|
'console.error("and this is an error");',
|
|
62
62
|
'</script>'));
|
|
63
|
-
driver.manage().logs().get(logging.Type.BROWSER)
|
|
64
|
-
|
|
65
|
-
});
|
|
63
|
+
return driver.manage().logs().get(logging.Type.BROWSER)
|
|
64
|
+
.then(entries => assert(entries.length).equalTo(0));
|
|
66
65
|
});
|
|
67
66
|
|
|
68
67
|
// Firefox does not capture JS error console log messages.
|
|
69
68
|
test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
|
|
70
|
-
it('can be turned down', function() {
|
|
69
|
+
it('can be turned down', function*() {
|
|
71
70
|
var prefs = new logging.Preferences();
|
|
72
71
|
prefs.setLevel(logging.Type.BROWSER, logging.Level.SEVERE);
|
|
73
72
|
|
|
74
|
-
driver = env.builder()
|
|
73
|
+
driver = yield env.builder()
|
|
75
74
|
.setLoggingPrefs(prefs)
|
|
76
75
|
.build();
|
|
77
76
|
|
|
78
|
-
driver.get(dataUrl(
|
|
77
|
+
yield driver.get(dataUrl(
|
|
79
78
|
'<!DOCTYPE html><script>',
|
|
80
79
|
'console.info("hello");',
|
|
81
80
|
'console.warn("this is a warning");',
|
|
82
81
|
'console.error("and this is an error");',
|
|
83
82
|
'</script>'));
|
|
84
|
-
driver.manage().logs().get(logging.Type.BROWSER)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
return driver.manage().logs().get(logging.Type.BROWSER)
|
|
84
|
+
.then(function(entries) {
|
|
85
|
+
assert(entries.length).equalTo(1);
|
|
86
|
+
assert(entries[0].level.name).equalTo('SEVERE');
|
|
87
|
+
assert(entries[0].message).matches(/.*\"?and this is an error\"?/);
|
|
88
|
+
});
|
|
89
89
|
});
|
|
90
90
|
|
|
91
91
|
// Firefox does not capture JS error console log messages.
|
|
92
92
|
test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
|
|
93
|
-
it('can be made verbose', function() {
|
|
93
|
+
it('can be made verbose', function*() {
|
|
94
94
|
var prefs = new logging.Preferences();
|
|
95
95
|
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
|
|
96
96
|
|
|
97
|
-
driver = env.builder()
|
|
97
|
+
driver = yield env.builder()
|
|
98
98
|
.setLoggingPrefs(prefs)
|
|
99
99
|
.build();
|
|
100
100
|
|
|
101
|
-
driver.get(dataUrl(
|
|
101
|
+
yield driver.get(dataUrl(
|
|
102
102
|
'<!DOCTYPE html><script>',
|
|
103
103
|
'console.debug("hello");',
|
|
104
104
|
'console.warn("this is a warning");',
|
|
105
105
|
'console.error("and this is an error");',
|
|
106
106
|
'</script>'));
|
|
107
|
-
driver.manage().logs().get(logging.Type.BROWSER)
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
107
|
+
return driver.manage().logs().get(logging.Type.BROWSER)
|
|
108
|
+
.then(function(entries) {
|
|
109
|
+
assert(entries.length).equalTo(3);
|
|
110
|
+
assert(entries[0].level.name).equalTo('DEBUG');
|
|
111
|
+
assert(entries[0].message).matches(/.*\"?hello\"?/);
|
|
112
|
+
|
|
113
|
+
assert(entries[1].level.name).equalTo('WARNING');
|
|
114
|
+
assert(entries[1].message).matches(/.*\"?this is a warning\"?/);
|
|
115
|
+
|
|
116
|
+
assert(entries[2].level.name).equalTo('SEVERE');
|
|
117
|
+
assert(entries[2].message).matches(/.*\"?and this is an error\"?/);
|
|
118
|
+
});
|
|
118
119
|
});
|
|
119
120
|
|
|
120
121
|
// Firefox does not capture JS error console log messages.
|
|
121
122
|
test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
|
|
122
|
-
it('clears records after retrieval', function() {
|
|
123
|
+
it('clears records after retrieval', function*() {
|
|
123
124
|
var prefs = new logging.Preferences();
|
|
124
125
|
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
|
|
125
126
|
|
|
126
|
-
driver = env.builder()
|
|
127
|
+
driver = yield env.builder()
|
|
127
128
|
.setLoggingPrefs(prefs)
|
|
128
129
|
.build();
|
|
129
130
|
|
|
130
|
-
driver.get(dataUrl(
|
|
131
|
+
yield driver.get(dataUrl(
|
|
131
132
|
'<!DOCTYPE html><script>',
|
|
132
133
|
'console.debug("hello");',
|
|
133
134
|
'console.warn("this is a warning");',
|
|
134
135
|
'console.error("and this is an error");',
|
|
135
136
|
'</script>'));
|
|
136
|
-
driver.manage().logs().get(logging.Type.BROWSER)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
assert(entries.length).equalTo(0);
|
|
141
|
-
});
|
|
137
|
+
yield driver.manage().logs().get(logging.Type.BROWSER)
|
|
138
|
+
.then(entries => assert(entries.length).equalTo(3));
|
|
139
|
+
return driver.manage().logs().get(logging.Type.BROWSER)
|
|
140
|
+
.then(entries => assert(entries.length).equalTo(0));
|
|
142
141
|
});
|
|
143
142
|
|
|
144
|
-
test.it('does not mix log types', function() {
|
|
143
|
+
test.it('does not mix log types', function*() {
|
|
145
144
|
var prefs = new logging.Preferences();
|
|
146
145
|
prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
|
|
147
146
|
prefs.setLevel(logging.Type.DRIVER, logging.Level.SEVERE);
|
|
148
147
|
|
|
149
|
-
driver = env.builder()
|
|
148
|
+
driver = yield env.builder()
|
|
150
149
|
.setLoggingPrefs(prefs)
|
|
151
150
|
.build();
|
|
152
151
|
|
|
153
|
-
driver.get(dataUrl(
|
|
152
|
+
yield driver.get(dataUrl(
|
|
154
153
|
'<!DOCTYPE html><script>',
|
|
155
154
|
'console.debug("hello");',
|
|
156
155
|
'console.warn("this is a warning");',
|
|
157
156
|
'console.error("and this is an error");',
|
|
158
157
|
'</script>'));
|
|
159
|
-
driver.manage().logs().get(logging.Type.DRIVER)
|
|
160
|
-
|
|
161
|
-
});
|
|
158
|
+
return driver.manage().logs().get(logging.Type.DRIVER)
|
|
159
|
+
.then(entries => assert(entries.length).equalTo(0));
|
|
162
160
|
});
|
|
163
161
|
});
|
|
164
162
|
|
|
@@ -17,11 +17,10 @@
|
|
|
17
17
|
|
|
18
18
|
'use strict';
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const assert = require('assert');
|
|
21
|
+
const net = require('net');
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
portprober = require('../../net/portprober');
|
|
23
|
+
const portprober = require('../../net/portprober');
|
|
25
24
|
|
|
26
25
|
describe('isFree', function() {
|
|
27
26
|
|
|
@@ -42,12 +41,12 @@ describe('isFree', function() {
|
|
|
42
41
|
server.listen(0, function() {
|
|
43
42
|
var port = server.address().port;
|
|
44
43
|
assertPortNotfree(port).then(function() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
return new Promise(resolve => {
|
|
45
|
+
server.close(function() {
|
|
46
|
+
server = null;
|
|
47
|
+
resolve(assertPortIsFree(port));
|
|
48
|
+
});
|
|
49
49
|
});
|
|
50
|
-
return done.promise;
|
|
51
50
|
}).then(function() { done(); }, done);
|
|
52
51
|
});
|
|
53
52
|
});
|
|
@@ -57,12 +56,12 @@ describe('isFree', function() {
|
|
|
57
56
|
server.listen(0, host, function() {
|
|
58
57
|
var port = server.address().port;
|
|
59
58
|
assertPortNotfree(port, host).then(function() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
return new Promise(resolve => {
|
|
60
|
+
server.close(function() {
|
|
61
|
+
server = null;
|
|
62
|
+
resolve(assertPortIsFree(port, host));
|
|
63
|
+
});
|
|
64
64
|
});
|
|
65
|
-
return done.promise;
|
|
66
65
|
}).then(function() { done(); }, done);
|
|
67
66
|
});
|
|
68
67
|
});
|
|
@@ -86,12 +85,12 @@ describe('findFreePort', function() {
|
|
|
86
85
|
portprober.findFreePort().then(function(port) {
|
|
87
86
|
server.listen(port, function() {
|
|
88
87
|
assertPortNotfree(port).then(function() {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
return new Promise(resolve => {
|
|
89
|
+
server.close(function() {
|
|
90
|
+
server = null;
|
|
91
|
+
resolve(assertPortIsFree(port));
|
|
92
|
+
});
|
|
93
93
|
});
|
|
94
|
-
return done.promise;
|
|
95
94
|
}).then(function() { done(); }, done);
|
|
96
95
|
});
|
|
97
96
|
});
|
|
@@ -102,12 +101,12 @@ describe('findFreePort', function() {
|
|
|
102
101
|
portprober.findFreePort(host).then(function(port) {
|
|
103
102
|
server.listen(port, host, function() {
|
|
104
103
|
assertPortNotfree(port, host).then(function() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
return new Promise(resolve => {
|
|
105
|
+
server.close(function() {
|
|
106
|
+
server = null;
|
|
107
|
+
resolve(assertPortIsFree(port, host));
|
|
108
|
+
});
|
|
109
109
|
});
|
|
110
|
-
return done.promise;
|
|
111
110
|
}).then(function() { done(); }, done);
|
|
112
111
|
});
|
|
113
112
|
});
|
|
@@ -30,122 +30,136 @@ test.suite(function(env) {
|
|
|
30
30
|
var browsers = env.browsers;
|
|
31
31
|
|
|
32
32
|
var driver;
|
|
33
|
-
test.before(function() {
|
|
34
|
-
driver = env.builder().build();
|
|
33
|
+
test.before(function*() {
|
|
34
|
+
driver = yield env.builder().build();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test.beforeEach(function*() {
|
|
38
|
+
if (!driver) {
|
|
39
|
+
driver = yield env.builder().build();
|
|
40
|
+
}
|
|
35
41
|
});
|
|
36
42
|
|
|
37
43
|
test.after(function() {
|
|
38
|
-
driver
|
|
44
|
+
if (driver) {
|
|
45
|
+
return driver.quit();
|
|
46
|
+
}
|
|
39
47
|
});
|
|
40
48
|
|
|
41
|
-
test.it('should wait for document to be loaded', function() {
|
|
42
|
-
driver.get(Pages.simpleTestPage);
|
|
43
|
-
assert(driver.getTitle()).equalTo('Hello WebDriver');
|
|
49
|
+
test.it('should wait for document to be loaded', function*() {
|
|
50
|
+
yield driver.get(Pages.simpleTestPage);
|
|
51
|
+
return assert(driver.getTitle()).equalTo('Hello WebDriver');
|
|
44
52
|
});
|
|
45
53
|
|
|
46
54
|
test.it('should follow redirects sent in the http response headers',
|
|
47
|
-
function() {
|
|
48
|
-
driver.get(Pages.redirectPage);
|
|
49
|
-
assert(driver.getTitle()).equalTo('We Arrive Here');
|
|
55
|
+
function*() {
|
|
56
|
+
yield driver.get(Pages.redirectPage);
|
|
57
|
+
return assert(driver.getTitle()).equalTo('We Arrive Here');
|
|
50
58
|
});
|
|
51
59
|
|
|
52
|
-
test.
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
test.ignore(browsers(Browser.SAFARI)).
|
|
61
|
+
it('should follow meta redirects', function*() {
|
|
62
|
+
yield driver.get(Pages.metaRedirectPage);
|
|
63
|
+
return assert(driver.getTitle()).equalTo('We Arrive Here');
|
|
55
64
|
});
|
|
56
65
|
|
|
57
66
|
// Skip Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1280300
|
|
58
67
|
test.ignore(browsers(Browser.FIREFOX)).
|
|
59
|
-
it('should be able to get a fragment on the current page', function() {
|
|
60
|
-
driver.get(Pages.xhtmlTestPage);
|
|
61
|
-
driver.get(Pages.xhtmlTestPage + '#text');
|
|
62
|
-
driver.findElement(By.id('id1'));
|
|
68
|
+
it('should be able to get a fragment on the current page', function*() {
|
|
69
|
+
yield driver.get(Pages.xhtmlTestPage);
|
|
70
|
+
yield driver.get(Pages.xhtmlTestPage + '#text');
|
|
71
|
+
yield driver.findElement(By.id('id1'));
|
|
63
72
|
});
|
|
64
73
|
|
|
65
74
|
test.ignore(browsers(Browser.IPAD, Browser.IPHONE)).
|
|
66
|
-
it('should wait for all frames to load in a frameset', function() {
|
|
67
|
-
driver.get(Pages.framesetPage);
|
|
68
|
-
driver.switchTo().frame(0);
|
|
75
|
+
it('should wait for all frames to load in a frameset', function*() {
|
|
76
|
+
yield driver.get(Pages.framesetPage);
|
|
77
|
+
yield driver.switchTo().frame(0);
|
|
69
78
|
|
|
70
|
-
driver.findElement(By.css('span#pageNumber')).getText()
|
|
71
|
-
|
|
72
|
-
});
|
|
79
|
+
let txt = yield driver.findElement(By.css('span#pageNumber')).getText();
|
|
80
|
+
assert(txt.trim()).equalTo('1');
|
|
73
81
|
|
|
74
|
-
driver.switchTo().defaultContent();
|
|
75
|
-
driver.switchTo().frame(1);
|
|
76
|
-
driver.findElement(By.css('span#pageNumber')).getText()
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
yield driver.switchTo().defaultContent();
|
|
83
|
+
yield driver.switchTo().frame(1);
|
|
84
|
+
txt = yield driver.findElement(By.css('span#pageNumber')).getText();
|
|
85
|
+
|
|
86
|
+
assert(txt.trim()).equalTo('2');
|
|
79
87
|
});
|
|
80
88
|
|
|
81
89
|
test.ignore(browsers(Browser.SAFARI)).
|
|
82
|
-
it('should be able to navigate back in browser history', function() {
|
|
83
|
-
driver.get(Pages.formPage);
|
|
90
|
+
it('should be able to navigate back in browser history', function*() {
|
|
91
|
+
yield driver.get(Pages.formPage);
|
|
84
92
|
|
|
85
|
-
driver.findElement(By.id('imageButton')).click();
|
|
86
|
-
driver.wait(until.titleIs('We Arrive Here'), 2500);
|
|
93
|
+
yield driver.findElement(By.id('imageButton')).click();
|
|
94
|
+
yield driver.wait(until.titleIs('We Arrive Here'), 2500);
|
|
87
95
|
|
|
88
|
-
driver.navigate().back();
|
|
89
|
-
driver.wait(until.titleIs('We Leave From Here'), 2500);
|
|
96
|
+
yield driver.navigate().back();
|
|
97
|
+
yield driver.wait(until.titleIs('We Leave From Here'), 2500);
|
|
90
98
|
});
|
|
91
99
|
|
|
92
100
|
test.ignore(browsers(Browser.SAFARI)).
|
|
93
|
-
it('should be able to navigate back in presence of iframes', function() {
|
|
94
|
-
driver.get(Pages.xhtmlTestPage);
|
|
101
|
+
it('should be able to navigate back in presence of iframes', function*() {
|
|
102
|
+
yield driver.get(Pages.xhtmlTestPage);
|
|
95
103
|
|
|
96
|
-
driver.findElement(By.name('sameWindow')).click();
|
|
97
|
-
driver.wait(until.titleIs('This page has iframes'), 2500);
|
|
104
|
+
yield driver.findElement(By.name('sameWindow')).click();
|
|
105
|
+
yield driver.wait(until.titleIs('This page has iframes'), 2500);
|
|
98
106
|
|
|
99
|
-
driver.navigate().back();
|
|
100
|
-
driver.wait(until.titleIs('XHTML Test Page'), 2500);
|
|
107
|
+
yield driver.navigate().back();
|
|
108
|
+
yield driver.wait(until.titleIs('XHTML Test Page'), 2500);
|
|
101
109
|
});
|
|
102
110
|
|
|
103
111
|
test.ignore(browsers(Browser.SAFARI)).
|
|
104
|
-
it('should be able to navigate forwards in browser history', function() {
|
|
105
|
-
driver.get(Pages.formPage);
|
|
112
|
+
it('should be able to navigate forwards in browser history', function*() {
|
|
113
|
+
yield driver.get(Pages.formPage);
|
|
106
114
|
|
|
107
|
-
driver.findElement(By.id('imageButton')).click();
|
|
108
|
-
driver.wait(until.titleIs('We Arrive Here'), 5000);
|
|
115
|
+
yield driver.findElement(By.id('imageButton')).click();
|
|
116
|
+
yield driver.wait(until.titleIs('We Arrive Here'), 5000);
|
|
109
117
|
|
|
110
|
-
driver.navigate().back();
|
|
111
|
-
driver.wait(until.titleIs('We Leave From Here'), 5000);
|
|
118
|
+
yield driver.navigate().back();
|
|
119
|
+
yield driver.wait(until.titleIs('We Leave From Here'), 5000);
|
|
112
120
|
|
|
113
|
-
driver.navigate().forward();
|
|
114
|
-
driver.wait(until.titleIs('We Arrive Here'), 5000);
|
|
121
|
+
yield driver.navigate().forward();
|
|
122
|
+
yield driver.wait(until.titleIs('We Arrive Here'), 5000);
|
|
115
123
|
});
|
|
116
124
|
|
|
117
125
|
// PhantomJS 2.0 does not properly reload pages on refresh.
|
|
118
126
|
test.ignore(browsers(Browser.PHANTOM_JS)).
|
|
119
|
-
it('should be able to refresh a page', function() {
|
|
120
|
-
driver.get(Pages.xhtmlTestPage);
|
|
127
|
+
it('should be able to refresh a page', function*() {
|
|
128
|
+
yield driver.get(Pages.xhtmlTestPage);
|
|
121
129
|
|
|
122
|
-
driver.navigate().refresh();
|
|
130
|
+
yield driver.navigate().refresh();
|
|
123
131
|
|
|
124
|
-
assert(driver.getTitle()).equalTo('XHTML Test Page');
|
|
132
|
+
yield assert(driver.getTitle()).equalTo('XHTML Test Page');
|
|
125
133
|
});
|
|
126
134
|
|
|
127
|
-
test.it('should return title of page if set', function() {
|
|
128
|
-
driver.get(Pages.xhtmlTestPage);
|
|
129
|
-
assert(driver.getTitle()).equalTo('XHTML Test Page');
|
|
135
|
+
test.it('should return title of page if set', function*() {
|
|
136
|
+
yield driver.get(Pages.xhtmlTestPage);
|
|
137
|
+
yield assert(driver.getTitle()).equalTo('XHTML Test Page');
|
|
130
138
|
|
|
131
|
-
driver.get(Pages.simpleTestPage);
|
|
132
|
-
assert(driver.getTitle()).equalTo('Hello WebDriver');
|
|
139
|
+
yield driver.get(Pages.simpleTestPage);
|
|
140
|
+
yield assert(driver.getTitle()).equalTo('Hello WebDriver');
|
|
133
141
|
});
|
|
134
142
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
143
|
+
describe('timeouts', function() {
|
|
144
|
+
test.afterEach(function() {
|
|
145
|
+
let nullDriver = () => driver = null;
|
|
146
|
+
if (driver) {
|
|
147
|
+
return driver.quit().then(nullDriver, nullDriver);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Only implemented in Firefox.
|
|
152
|
+
test.ignore(browsers(
|
|
153
|
+
Browser.CHROME,
|
|
154
|
+
Browser.IE,
|
|
155
|
+
Browser.IPAD,
|
|
156
|
+
Browser.IPHONE,
|
|
157
|
+
Browser.OPERA,
|
|
158
|
+
Browser.PHANTOM_JS)).
|
|
159
|
+
it('should timeout if page load timeout is set', function*() {
|
|
160
|
+
yield driver.manage().timeouts().pageLoadTimeout(1);
|
|
161
|
+
return driver.get(Pages.sleepingPage + '?time=3')
|
|
162
|
+
.then(function() {
|
|
149
163
|
throw Error('Should have timed out on page load');
|
|
150
164
|
}, function(e) {
|
|
151
165
|
if (!(e instanceof error.ScriptTimeoutError)
|
|
@@ -153,14 +167,6 @@ test.suite(function(env) {
|
|
|
153
167
|
throw Error('Unexpected error response: ' + e);
|
|
154
168
|
}
|
|
155
169
|
});
|
|
156
|
-
}).then(resetPageLoad, function(err) {
|
|
157
|
-
resetPageLoad().finally(function() {
|
|
158
|
-
throw err;
|
|
159
|
-
});
|
|
160
170
|
});
|
|
161
|
-
|
|
162
|
-
function resetPageLoad() {
|
|
163
|
-
return driver.manage().timeouts().pageLoadTimeout(-1);
|
|
164
|
-
}
|
|
165
171
|
});
|
|
166
172
|
});
|
|
@@ -24,49 +24,35 @@ var test = require('../../lib/test');
|
|
|
24
24
|
test.suite(function(env) {
|
|
25
25
|
var driver;
|
|
26
26
|
|
|
27
|
-
test.before(function() {
|
|
28
|
-
driver = env.builder().build();
|
|
27
|
+
test.before(function*() {
|
|
28
|
+
driver = yield env.builder().build();
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
test.after(function() {
|
|
32
|
-
driver.quit();
|
|
32
|
+
return driver.quit();
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
var testPageUrl =
|
|
36
36
|
'data:text/html,<html><h1>' + path.basename(__filename) + '</h1></html>';
|
|
37
37
|
|
|
38
38
|
test.beforeEach(function() {
|
|
39
|
-
driver.get(testPageUrl);
|
|
39
|
+
return driver.get(testPageUrl);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
describe('phantomjs.Driver', function() {
|
|
43
43
|
describe('#executePhantomJS()', function() {
|
|
44
44
|
|
|
45
|
-
test.it('can execute scripts using PhantomJS API', function() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
});
|
|
45
|
+
test.it('can execute scripts using PhantomJS API', function*() {
|
|
46
|
+
let url = yield driver.executePhantomJS('return this.url;');
|
|
47
|
+
assert.equal(testPageUrl, decodeURIComponent(url));
|
|
49
48
|
});
|
|
50
49
|
|
|
51
|
-
test.it('can execute scripts as functions', function() {
|
|
52
|
-
driver.executePhantomJS(function(a, b) {
|
|
50
|
+
test.it('can execute scripts as functions', function*() {
|
|
51
|
+
let result = yield driver.executePhantomJS(function(a, b) {
|
|
53
52
|
return a + b;
|
|
54
|
-
}, 1, 2)
|
|
55
|
-
assert.equal(3, result);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
53
|
+
}, 1, 2);
|
|
58
54
|
|
|
59
|
-
|
|
60
|
-
driver.manage().addCookie({name: 'foo', value: 'bar'});
|
|
61
|
-
driver.manage().getCookie('foo').then(function(cookie) {
|
|
62
|
-
assert.equal('bar', cookie.value);
|
|
63
|
-
});
|
|
64
|
-
driver.executePhantomJS(function() {
|
|
65
|
-
this.clearCookies();
|
|
66
|
-
});
|
|
67
|
-
driver.manage().getCookie('foo').then(function(cookie) {
|
|
68
|
-
assert.equal(null, cookie);
|
|
69
|
-
});
|
|
55
|
+
assert.equal(3, result);
|
|
70
56
|
});
|
|
71
57
|
});
|
|
72
58
|
});
|
package/test/proxy_test.js
CHANGED
|
@@ -96,7 +96,7 @@ test.suite(function(env) {
|
|
|
96
96
|
|
|
97
97
|
var driver;
|
|
98
98
|
test.beforeEach(function() { driver = null; });
|
|
99
|
-
test.afterEach(function() { driver && driver.quit(); });
|
|
99
|
+
test.afterEach(function() { return driver && driver.quit(); });
|
|
100
100
|
|
|
101
101
|
function createDriver(proxy) {
|
|
102
102
|
// For Firefox we need to explicitly enable proxies for localhost by
|
|
@@ -104,7 +104,7 @@ test.suite(function(env) {
|
|
|
104
104
|
let profile = new firefox.Profile();
|
|
105
105
|
profile.setPreference('network.proxy.no_proxies_on', '');
|
|
106
106
|
|
|
107
|
-
driver = env.builder()
|
|
107
|
+
return driver = env.builder()
|
|
108
108
|
.setFirefoxOptions(new firefox.Options().setProfile(profile))
|
|
109
109
|
.setProxy(proxy)
|
|
110
110
|
.build();
|
|
@@ -116,14 +116,14 @@ test.suite(function(env) {
|
|
|
116
116
|
// phantomjs 1.9.1 in webdriver mode does not appear to respect proxy
|
|
117
117
|
// settings.
|
|
118
118
|
test.ignore(env.browsers(Browser.PHANTOM_JS)).
|
|
119
|
-
it('can configure HTTP proxy host', function() {
|
|
120
|
-
createDriver(proxy.manual({
|
|
119
|
+
it('can configure HTTP proxy host', function*() {
|
|
120
|
+
yield createDriver(proxy.manual({
|
|
121
121
|
http: proxyServer.host()
|
|
122
122
|
}));
|
|
123
123
|
|
|
124
|
-
driver.get(helloServer.url());
|
|
125
|
-
assert(driver.getTitle()).equalTo('Proxy page');
|
|
126
|
-
assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
124
|
+
yield driver.get(helloServer.url());
|
|
125
|
+
yield assert(driver.getTitle()).equalTo('Proxy page');
|
|
126
|
+
yield assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
127
127
|
equalTo('This is the proxy landing page');
|
|
128
128
|
});
|
|
129
129
|
|
|
@@ -134,20 +134,20 @@ test.suite(function(env) {
|
|
|
134
134
|
Browser.FIREFOX,
|
|
135
135
|
'legacy-' + Browser.FIREFOX,
|
|
136
136
|
Browser.PHANTOM_JS)).
|
|
137
|
-
it('can bypass proxy for specific hosts', function() {
|
|
138
|
-
createDriver(proxy.manual({
|
|
137
|
+
it('can bypass proxy for specific hosts', function*() {
|
|
138
|
+
yield createDriver(proxy.manual({
|
|
139
139
|
http: proxyServer.host(),
|
|
140
140
|
bypass: helloServer.host()
|
|
141
141
|
}));
|
|
142
142
|
|
|
143
|
-
driver.get(helloServer.url());
|
|
144
|
-
assert(driver.getTitle()).equalTo('Hello');
|
|
145
|
-
assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
143
|
+
yield driver.get(helloServer.url());
|
|
144
|
+
yield assert(driver.getTitle()).equalTo('Hello');
|
|
145
|
+
yield assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
146
146
|
equalTo('Hello, world!');
|
|
147
147
|
|
|
148
|
-
driver.get(goodbyeServer.url());
|
|
149
|
-
assert(driver.getTitle()).equalTo('Proxy page');
|
|
150
|
-
assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
148
|
+
yield driver.get(goodbyeServer.url());
|
|
149
|
+
yield assert(driver.getTitle()).equalTo('Proxy page');
|
|
150
|
+
yield assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
151
151
|
equalTo('This is the proxy landing page');
|
|
152
152
|
});
|
|
153
153
|
|
|
@@ -159,17 +159,17 @@ test.suite(function(env) {
|
|
|
159
159
|
test.ignore(env.browsers(
|
|
160
160
|
Browser.IE, Browser.OPERA, Browser.PHANTOM_JS, Browser.SAFARI)).
|
|
161
161
|
describe('pac proxy settings', function() {
|
|
162
|
-
test.it('can configure proxy through PAC file', function() {
|
|
163
|
-
createDriver(proxy.pac(proxyServer.url('/proxy.pac')));
|
|
162
|
+
test.it('can configure proxy through PAC file', function*() {
|
|
163
|
+
yield createDriver(proxy.pac(proxyServer.url('/proxy.pac')));
|
|
164
164
|
|
|
165
|
-
driver.get(helloServer.url());
|
|
166
|
-
assert(driver.getTitle()).equalTo('Proxy page');
|
|
167
|
-
assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
165
|
+
yield driver.get(helloServer.url());
|
|
166
|
+
yield assert(driver.getTitle()).equalTo('Proxy page');
|
|
167
|
+
yield assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
168
168
|
equalTo('This is the proxy landing page');
|
|
169
169
|
|
|
170
|
-
driver.get(goodbyeServer.url());
|
|
171
|
-
assert(driver.getTitle()).equalTo('Goodbye');
|
|
172
|
-
assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
170
|
+
yield driver.get(goodbyeServer.url());
|
|
171
|
+
yield assert(driver.getTitle()).equalTo('Goodbye');
|
|
172
|
+
yield assert(driver.findElement({tagName: 'h3'}).getText()).
|
|
173
173
|
equalTo('Goodbye, world!');
|
|
174
174
|
});
|
|
175
175
|
});
|