File tree Expand file tree Collapse file tree 4 files changed +50
-1
lines changed Expand file tree Collapse file tree 4 files changed +50
-1
lines changed Original file line number Diff line number Diff line change @@ -124,7 +124,6 @@ browser.mouse
124
124
browser.quit
125
125
```
126
126
127
-
128
127
## Docker
129
128
130
129
In docker as root you must pass the no-sandbox browser option:
@@ -775,6 +774,18 @@ browser.add_script_tag(content: "window.__injected = 42")
775
774
browser.evaluate(" window.__injected" ) # => 42
776
775
```
777
776
777
+ #### evaluate_on_new_document(javascript)
778
+
779
+ Evaluate JavaScript to modify things before a page load:
780
+
781
+ ``` ruby
782
+ javascript = <<~JS
783
+ Object .defineProperty (navigator , ' languages' , {
784
+ get : function () { return [' tlh' ]; }
785
+ });
786
+ JS
787
+ browser.evaluate_on_new_document javascript
788
+ ```
778
789
779
790
## Frames
780
791
Original file line number Diff line number Diff line change @@ -77,6 +77,10 @@ def extensions
77
77
end
78
78
end
79
79
80
+ def evaluate_on_new_document ( javascript )
81
+ extensions << javascript
82
+ end
83
+
80
84
def timeout
81
85
@timeout || DEFAULT_TIMEOUT
82
86
end
Original file line number Diff line number Diff line change @@ -205,6 +205,25 @@ module Ferrum
205
205
browser &.quit
206
206
end
207
207
end
208
+
209
+ it 'supports user Javascript' do
210
+ begin
211
+ javascript = <<~JS
212
+ Object.defineProperty(navigator, 'languages', {
213
+ get: function() { return ['tlh']; }
214
+ });
215
+ JS
216
+
217
+ browser = Browser . new . tap { |b | b . evaluate_on_new_document ( javascript ) }
218
+ browser . go_to ( base_url ( '/ferrum/with_user_js' ) )
219
+
220
+ browser_language = browser . evaluate ( 'document.getElementById("browser-languages").innerHTML' )
221
+
222
+ expect ( browser_language ) . to eq ( 'tlh' )
223
+ ensure
224
+ browser &.quit
225
+ end
226
+ end
208
227
end
209
228
210
229
context "javascript errors" do
Original file line number Diff line number Diff line change
1
+ < html xmlns ="http://www.w3.org/1999/xhtml " lang ="en ">
2
+ < head >
3
+ < meta http-equiv ="Content-type " content ="text/html; charset=utf-8 "/>
4
+ < title > ferrum with_user_js</ title >
5
+ </ head >
6
+ < body >
7
+ < dl >
8
+ < dt > languages</ dt >
9
+ < dd id ="browser-languages "> </ dd >
10
+ </ dl >
11
+ < script >
12
+ document . getElementById ( 'browser-languages' ) . innerHTML = navigator . languages ;
13
+ </ script >
14
+ </ body >
15
+ </ html >
You can’t perform that action at this time.
0 commit comments