Skip to content

Commit c356477

Browse files
committed
Cosmetic tweaks for evaluate_on_new_document
1 parent d7cfe8b commit c356477

File tree

3 files changed

+26
-24
lines changed

3 files changed

+26
-24
lines changed

README.md

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ browser.mouse
124124
browser.quit
125125
```
126126

127+
127128
## Docker
128129

129130
In docker as root you must pass the no-sandbox browser option:
@@ -739,6 +740,20 @@ simple value.
739740
browser.execute(%(1 + 1)) # => true
740741
```
741742

743+
#### evaluate_on_new_document(expression)
744+
745+
Evaluate JavaScript to modify things before a page load
746+
747+
* expression `String` should be valid JavaScript
748+
749+
```ruby
750+
browser.evaluate_on_new_document <<~JS
751+
Object.defineProperty(navigator, "languages", {
752+
get: function() { return ["tlh"]; }
753+
});
754+
JS
755+
```
756+
742757
#### add_script_tag(\*\*options) : `Boolean`
743758

744759
* options `Hash`
@@ -774,18 +789,6 @@ browser.add_script_tag(content: "window.__injected = 42")
774789
browser.evaluate("window.__injected") # => 42
775790
```
776791

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-
```
789792

790793
## Frames
791794

lib/ferrum/browser.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ def extensions
7777
end
7878
end
7979

80-
def evaluate_on_new_document(javascript)
81-
extensions << javascript
80+
def evaluate_on_new_document(expression)
81+
extensions << expression
8282
end
8383

8484
def timeout

spec/browser_spec.rb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -206,20 +206,19 @@ module Ferrum
206206
end
207207
end
208208

209-
it 'supports user Javascript' do
209+
it "supports evaluation of JavaScript before page loads" do
210210
begin
211-
javascript = <<~JS
212-
Object.defineProperty(navigator, 'languages', {
213-
get: function() { return ['tlh']; }
211+
browser = Browser.new(base_url: base_url)
212+
213+
browser.evaluate_on_new_document <<~JS
214+
Object.defineProperty(navigator, "languages", {
215+
get: function() { return ["tlh"]; }
214216
});
215217
JS
216218

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')
219+
browser.go_to("/ferrum/with_user_js")
220+
language = browser.at_xpath("//*[@id='browser-languages']/text()").text
221+
expect(language).to eq("tlh")
223222
ensure
224223
browser&.quit
225224
end

0 commit comments

Comments
 (0)