playwright-ruby-client 1.39.0 → 1.39.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0dedf5c9cce96afd64ad16c45baed1b2c1fe37bb9b2632a741d8b75640bf2ae
4
- data.tar.gz: 5f056dc5acd7bd5860c3ccaee1d7e5460923e9eb2a985c41ec1e36c8d8c91b7a
3
+ metadata.gz: e9c0bd246e9fc2ccd9358b60aa056266dfcee1f3fd2ee0174ae7a23173a1a9cb
4
+ data.tar.gz: 7e68e6e420040c24cdb9514dcde89ec6a2fd68ceda91b9590ed367ef5b1e52b7
5
5
  SHA512:
6
- metadata.gz: 82629797b234ab08abe2c9258605d0d7826eeaf3f4f70274e3f1ced8a5b41560ee1832f7ae98522ce7dfe1a826bd5058c88e9aba7f6d507d16bfa20d20206cea
7
- data.tar.gz: '0027783e79287ba14021438154229a4de61c041c983a9f6fa582d533524df395bfb9cfaedbabf9e3d6be015a2ebed9a1fa03674bd86965f693bbd12bae9c67ce'
6
+ metadata.gz: e67763b081ab137ab5da3cfbb0e397a664b4489574a3368e0059566b0e6c519d8685e252bedf76213cd7a8cad34cde3e0b2c4587adcc2241b255095ad1ffa3c7
7
+ data.tar.gz: 675f7ad040dace09c78d5d12672999d7c5a6d2ae067c89a078dd75e6f866db53191d1890a76d816f8aef797d83f0b12ed7d1311c3cbf00c90f62d38cfb407e62
@@ -8,19 +8,15 @@ sidebar_position: 10
8
8
 
9
9
  A Browser is created via [BrowserType#launch](./browser_type#launch). An example of using a [Browser](./browser) to create a [Page](./page):
10
10
 
11
- ```python sync title=example_5d31815545511b1d8ce5dfce5b153cb5ea46a1868cee95eb211d77f33026788b.py
12
- from playwright.sync_api import sync_playwright, Playwright
13
-
14
- def run(playwright: Playwright):
15
- firefox = playwright.firefox
16
- browser = firefox.launch()
17
- page = browser.new_page()
18
- page.goto("https://example.com")
19
- browser.close()
20
-
21
- with sync_playwright() as playwright:
22
- run(playwright)
23
-
11
+ ```ruby
12
+ firefox = playwright.firefox
13
+ browser = firefox.launch
14
+ begin
15
+ page = browser.new_page
16
+ page.goto("https://example.com")
17
+ ensure
18
+ browser.close
19
+ end
24
20
  ```
25
21
 
26
22
  ## browser_type
@@ -158,29 +158,21 @@ See [Page#expose_binding](./page#expose_binding) for page-only version.
158
158
 
159
159
  An example of exposing page URL to all frames in all pages in the context:
160
160
 
161
- ```python sync title=example_a450852d36dda88564582371af8d87bb58b1a517aac4fa60b7a58a0e41c5ceff.py
162
- from playwright.sync_api import sync_playwright, Playwright
163
-
164
- def run(playwright: Playwright):
165
- webkit = playwright.webkit
166
- browser = webkit.launch(headless=false)
167
- context = browser.new_context()
168
- context.expose_binding("pageURL", lambda source: source["page"].url)
169
- page = context.new_page()
170
- page.set_content("""
171
- <script>
172
- async function onClick() {
173
- document.querySelector('div').textContent = await window.pageURL();
174
- }
175
- </script>
176
- <button onclick="onClick()">Click me</button>
177
- <div></div>
178
- """)
179
- page.get_by_role("button").click()
180
-
181
- with sync_playwright() as playwright:
182
- run(playwright)
161
+ ```ruby
162
+ browser_context.expose_binding("pageURL", ->(source) { source[:page].url })
163
+ page = browser_context.new_page
164
+
165
+ page.content = <<~HTML
166
+ <script>
167
+ async function onClick() {
168
+ document.querySelector('div').textContent = await window.pageURL();
169
+ }
170
+ </script>
171
+ <button onclick="onClick()">Click me</button>
172
+ <div></div>
173
+ HTML
183
174
 
175
+ page.get_by_role("button").click
184
176
  ```
185
177
 
186
178
  An example of passing an element handle:
@@ -225,36 +217,25 @@ See [Page#expose_function](./page#expose_function) for page-only version.
225
217
 
226
218
  An example of adding a `sha256` function to all pages in the context:
227
219
 
228
- ```python sync title=example_714719de9c92e66678257180301c2512f8cd69185f53a5121b6c52194f61a871.py
229
- import hashlib
230
- from playwright.sync_api import sync_playwright
231
-
232
- def sha256(text: str) -> str:
233
- m = hashlib.sha256()
234
- m.update(bytes(text, "utf8"))
235
- return m.hexdigest()
236
-
237
-
238
- def run(playwright: Playwright):
239
- webkit = playwright.webkit
240
- browser = webkit.launch(headless=False)
241
- context = browser.new_context()
242
- context.expose_function("sha256", sha256)
243
- page = context.new_page()
244
- page.set_content("""
245
- <script>
246
- async function onClick() {
247
- document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
248
- }
249
- </script>
250
- <button onclick="onClick()">Click me</button>
251
- <div></div>
252
- """)
253
- page.get_by_role("button").click()
254
-
255
- with sync_playwright() as playwright:
256
- run(playwright)
220
+ ```ruby
221
+ require 'digest'
222
+
223
+ def sha256(text)
224
+ Digest::SHA256.hexdigest(text)
225
+ end
257
226
 
227
+ browser_context.expose_function("sha256", method(:sha256))
228
+ page = browser_context.new_page()
229
+ page.content = <<~HTML
230
+ <script>
231
+ async function onClick() {
232
+ document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
233
+ }
234
+ </script>
235
+ <button onclick="onClick()">Click me</button>
236
+ <div></div>
237
+ HTML
238
+ page.get_by_role("button").click
258
239
  ```
259
240
 
260
241
  ## grant_permissions
@@ -8,20 +8,15 @@ sidebar_position: 10
8
8
  BrowserType provides methods to launch a specific browser instance or connect to an existing one. The following is a
9
9
  typical example of using Playwright to drive automation:
10
10
 
11
- ```python sync title=example_2f9fbff87f35af4b76a27f54efeca3201696bbfa94ce03fee5a3df2639cc27d3.py
12
- from playwright.sync_api import sync_playwright, Playwright
13
-
14
- def run(playwright: Playwright):
15
- chromium = playwright.chromium
16
- browser = chromium.launch()
17
- page = browser.new_page()
18
- page.goto("https://example.com")
19
- # other actions...
20
- browser.close()
11
+ ```ruby
12
+ chromium = playwright.chromium
13
+ chromium.launch do |browser|
14
+ page = browser.new_page
15
+ page.goto('https://example.com/')
21
16
 
22
- with sync_playwright() as playwright:
23
- run(playwright)
17
+ # other actions
24
18
 
19
+ end
25
20
  ```
26
21
 
27
22
  ## connect_over_cdp
@@ -9,24 +9,21 @@ sidebar_position: 10
9
9
 
10
10
  An example of using [Dialog](./dialog) class:
11
11
 
12
- ```python sync title=example_a7dcc75b7aa5544237ac3a964e9196d0445308864d3ce820f8cb8396f687b04a.py
13
- from playwright.sync_api import sync_playwright, Playwright
14
-
15
- def handle_dialog(dialog):
16
- print(dialog.message)
17
- dialog.dismiss()
18
-
19
- def run(playwright: Playwright):
20
- chromium = playwright.chromium
21
- browser = chromium.launch()
22
- page = browser.new_page()
23
- page.on("dialog", handle_dialog)
24
- page.evaluate("alert('1')")
25
- browser.close()
26
-
27
- with sync_playwright() as playwright:
28
- run(playwright)
29
-
12
+ ```ruby
13
+ def handle_dialog(dialog)
14
+ puts "[#{dialog.type}] #{dialog.message}"
15
+ if dialog.message =~ /foo/
16
+ dialog.accept
17
+ else
18
+ dialog.dismiss
19
+ end
20
+ end
21
+
22
+ page.on("dialog", method(:handle_dialog))
23
+ page.evaluate("confirm('foo')") # will be accepted
24
+ # => [confirm] foo
25
+ page.evaluate("alert('bar')") # will be dismissed
26
+ # => [alert] bar
30
27
  ```
31
28
 
32
29
  **NOTE**: Dialogs are dismissed automatically, unless there is a [`event: Page.dialog`] listener.
@@ -12,16 +12,16 @@ browser context is closed.
12
12
 
13
13
  Download event is emitted once the download starts. Download path becomes available once download completes.
14
14
 
15
- ```python sync title=example_c247767083cf193df26a39a61a3a8bc19d63ed5c24db91b88c50b7d37975005d.py
16
- # Start waiting for the download
17
- with page.expect_download() as download_info:
18
- # Perform the action that initiates download
19
- page.get_by_text("Download file").click()
20
- download = download_info.value
15
+ ```ruby
16
+ download = page.expect_download do
17
+ page.get_by_text("Download file").click
18
+ end
21
19
 
22
20
  # Wait for the download process to complete and save the downloaded file somewhere
23
- download.save_as("/path/to/save/at/" + download.suggested_filename)
21
+ path = File.join(download_dir, download.suggested_filename)
22
+ download.save_as(path)
24
23
 
24
+ path
25
25
  ```
26
26
 
27
27
  ## cancel
@@ -86,9 +86,8 @@ is still in progress. Will wait for the download to finish if necessary.
86
86
 
87
87
  **Usage**
88
88
 
89
- ```python sync title=example_66ffd4ef7286957e4294d84b8f660ff852c87af27a56b3e4dd9f84562b5ece02.py
90
- download.save_as("/path/to/save/at/" + download.suggested_filename)
91
-
89
+ ```ruby
90
+ download.save_as(File.join(download_dir, download.suggested_filename))
92
91
  ```
93
92
 
94
93
  ## suggested_filename
@@ -505,14 +505,13 @@ Triggers a `change` and `input` event once all the provided options have been se
505
505
 
506
506
  **Usage**
507
507
 
508
- ```python sync title=example_e6bbc99e34c9f6ee73aa7d4265d34af456e6c67d185530f0a77f8064050a3ec4.py
509
- # Single selection matching the value or label
510
- handle.select_option("blue")
508
+ ```ruby
509
+ # single selection matching the value
510
+ element_handle.select_option(value: "blue")
511
511
  # single selection matching both the label
512
- handle.select_option(label="blue")
512
+ element_handle.select_option(label: "blue")
513
513
  # multiple selection
514
- handle.select_option(value=["red", "green", "blue"])
515
-
514
+ element_handle.select_option(value: ["red", "green", "blue"])
516
515
  ```
517
516
 
518
517
  ## select_text
@@ -15,25 +15,16 @@ At every point of time, page exposes its current frame tree via the [Page#main_f
15
15
 
16
16
  An example of dumping frame tree:
17
17
 
18
- ```python sync title=example_2bc8a0187190738d8dc7b29c66ad5f9f2187fd1827455e9ceb1e9ace26aaf534.py
19
- from playwright.sync_api import sync_playwright, Playwright
20
-
21
- def run(playwright: Playwright):
22
- firefox = playwright.firefox
23
- browser = firefox.launch()
24
- page = browser.new_page()
25
- page.goto("https://www.theverge.com")
26
- dump_frame_tree(page.main_frame, "")
27
- browser.close()
28
-
29
- def dump_frame_tree(frame, indent):
30
- print(indent + frame.name + '@' + frame.url)
31
- for child in frame.child_frames:
32
- dump_frame_tree(child, indent + " ")
33
-
34
- with sync_playwright() as playwright:
35
- run(playwright)
18
+ ```ruby
19
+ def dump_frame_tree(frame, indent = 0)
20
+ puts "#{' ' * indent}#{frame.name}@#{frame.url}"
21
+ frame.child_frames.each do |child|
22
+ dump_frame_tree(child, indent + 2)
23
+ end
24
+ end
36
25
 
26
+ page.goto("https://www.theverge.com")
27
+ dump_frame_tree(page.main_frame)
37
28
  ```
38
29
 
39
30
  ## add_script_tag
@@ -920,14 +911,13 @@ Triggers a `change` and `input` event once all the provided options have been se
920
911
 
921
912
  **Usage**
922
913
 
923
- ```python sync title=example_3f390f340c78c42dd0c88a09b2f56575b02b163786e8cdee33581217afced6b2.py
924
- # Single selection matching the value or label
925
- frame.select_option("select#colors", "blue")
914
+ ```ruby
915
+ # single selection matching the value
916
+ frame.select_option("select#colors", value: "blue")
926
917
  # single selection matching both the label
927
- frame.select_option("select#colors", label="blue")
918
+ frame.select_option("select#colors", label: "blue")
928
919
  # multiple selection
929
- frame.select_option("select#colors", value=["red", "green", "blue"])
930
-
920
+ frame.select_option("select#colors", value: ["red", "green", "blue"])
931
921
  ```
932
922
 
933
923
  ## set_checked
@@ -1099,20 +1089,9 @@ Returns when the `expression` returns a truthy value, returns that value.
1099
1089
 
1100
1090
  The [Frame#wait_for_function](./frame#wait_for_function) can be used to observe viewport size change:
1101
1091
 
1102
- ```python sync title=example_e6a8c279eb09e58e3522cb6237f5d62165b164cad0c1916720af299ffcb8dc8a.py
1103
- from playwright.sync_api import sync_playwright, Playwright
1104
-
1105
- def run(playwright: Playwright):
1106
- webkit = playwright.webkit
1107
- browser = webkit.launch()
1108
- page = browser.new_page()
1109
- page.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
1110
- page.main_frame.wait_for_function("() => window.x > 0")
1111
- browser.close()
1112
-
1113
- with sync_playwright() as playwright:
1114
- run(playwright)
1115
-
1092
+ ```ruby
1093
+ frame.evaluate("window.x = 0; setTimeout(() => { window.x = 100 }, 1000);")
1094
+ frame.wait_for_function("() => window.x > 0")
1116
1095
  ```
1117
1096
 
1118
1097
  To pass an argument to the predicate of `frame.waitForFunction` function:
@@ -1188,22 +1167,13 @@ function will throw.
1188
1167
 
1189
1168
  This method works across navigations:
1190
1169
 
1191
- ```python sync title=example_6e2a71807566cf008382d4c163ff6e71e34d7f10ef6706ad7fcaa9b70c256a66.py
1192
- from playwright.sync_api import sync_playwright, Playwright
1193
-
1194
- def run(playwright: Playwright):
1195
- chromium = playwright.chromium
1196
- browser = chromium.launch()
1197
- page = browser.new_page()
1198
- for current_url in ["https://google.com", "https://bbc.com"]:
1199
- page.goto(current_url, wait_until="domcontentloaded")
1200
- element = page.main_frame.wait_for_selector("img")
1201
- print("Loaded image: " + str(element.get_attribute("src")))
1202
- browser.close()
1203
-
1204
- with sync_playwright() as playwright:
1205
- run(playwright)
1206
-
1170
+ ```ruby
1171
+ %w[https://google.com https://bbc.com].each do |current_url|
1172
+ page.goto(current_url, waitUntil: "domcontentloaded")
1173
+ frame = page.main_frame
1174
+ element = frame.wait_for_selector("img")
1175
+ puts "Loaded image: #{element["src"]}"
1176
+ end
1207
1177
  ```
1208
1178
 
1209
1179
  ## wait_for_timeout
@@ -42,7 +42,7 @@ def all_inner_texts
42
42
 
43
43
  Returns an array of `node.innerText` values for all matching nodes.
44
44
 
45
- **NOTE**: If you need to assert text on the page, prefer [`method: LocatorAssertions.toHaveText`] with `useInnerText` option to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
45
+ **NOTE**: If you need to assert text on the page, prefer [LocatorAssertions#to_have_text](./locator_assertions#to_have_text) with `useInnerText` option to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
46
46
 
47
47
  **Usage**
48
48
 
@@ -59,7 +59,7 @@ def all_text_contents
59
59
 
60
60
  Returns an array of `node.textContent` values for all matching nodes.
61
61
 
62
- **NOTE**: If you need to assert text on the page, prefer [`method: LocatorAssertions.toHaveText`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
62
+ **NOTE**: If you need to assert text on the page, prefer [LocatorAssertions#to_have_text](./locator_assertions#to_have_text) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
63
63
 
64
64
  **Usage**
65
65
 
@@ -236,7 +236,7 @@ def count
236
236
 
237
237
  Returns the number of elements matching the locator.
238
238
 
239
- **NOTE**: If you need to assert the number of elements on the page, prefer [`method: LocatorAssertions.toHaveCount`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
239
+ **NOTE**: If you need to assert the number of elements on the page, prefer [LocatorAssertions#to_have_count](./locator_assertions#to_have_count) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
240
240
 
241
241
  **Usage**
242
242
 
@@ -532,7 +532,7 @@ alias: `[]`
532
532
 
533
533
  Returns the matching element's attribute value.
534
534
 
535
- **NOTE**: If you need to assert an element's attribute, prefer [`method: LocatorAssertions.toHaveAttribute`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
535
+ **NOTE**: If you need to assert an element's attribute, prefer [LocatorAssertions#to_have_attribute](./locator_assertions#to_have_attribute) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
536
536
 
537
537
  ## get_by_alt_text
538
538
 
@@ -816,7 +816,7 @@ def inner_text(timeout: nil)
816
816
 
817
817
  Returns the [`element.innerText`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText).
818
818
 
819
- **NOTE**: If you need to assert text on the page, prefer [`method: LocatorAssertions.toHaveText`] with `useInnerText` option to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
819
+ **NOTE**: If you need to assert text on the page, prefer [LocatorAssertions#to_have_text](./locator_assertions#to_have_text) with `useInnerText` option to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
820
820
 
821
821
  ## input_value
822
822
 
@@ -827,7 +827,7 @@ def input_value(timeout: nil)
827
827
 
828
828
  Returns the value for the matching `<input>` or `<textarea>` or `<select>` element.
829
829
 
830
- **NOTE**: If you need to assert input value, prefer [`method: LocatorAssertions.toHaveValue`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
830
+ **NOTE**: If you need to assert input value, prefer [LocatorAssertions#to_have_value](./locator_assertions#to_have_value) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
831
831
 
832
832
  **Usage**
833
833
 
@@ -848,7 +848,7 @@ def checked?(timeout: nil)
848
848
 
849
849
  Returns whether the element is checked. Throws if the element is not a checkbox or radio input.
850
850
 
851
- **NOTE**: If you need to assert that checkbox is checked, prefer [`method: LocatorAssertions.toBeChecked`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
851
+ **NOTE**: If you need to assert that checkbox is checked, prefer [LocatorAssertions#to_be_checked](./locator_assertions#to_be_checked) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
852
852
 
853
853
  **Usage**
854
854
 
@@ -865,7 +865,7 @@ def disabled?(timeout: nil)
865
865
 
866
866
  Returns whether the element is disabled, the opposite of [enabled](https://playwright.dev/python/docs/actionability#enabled).
867
867
 
868
- **NOTE**: If you need to assert that an element is disabled, prefer [`method: LocatorAssertions.toBeDisabled`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
868
+ **NOTE**: If you need to assert that an element is disabled, prefer [LocatorAssertions#to_be_disabled](./locator_assertions#to_be_disabled) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
869
869
 
870
870
  **Usage**
871
871
 
@@ -882,7 +882,7 @@ def editable?(timeout: nil)
882
882
 
883
883
  Returns whether the element is [editable](https://playwright.dev/python/docs/actionability#editable).
884
884
 
885
- **NOTE**: If you need to assert that an element is editable, prefer [`method: LocatorAssertions.toBeEditable`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
885
+ **NOTE**: If you need to assert that an element is editable, prefer [LocatorAssertions#to_be_editable](./locator_assertions#to_be_editable) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
886
886
 
887
887
  **Usage**
888
888
 
@@ -899,7 +899,7 @@ def enabled?(timeout: nil)
899
899
 
900
900
  Returns whether the element is [enabled](https://playwright.dev/python/docs/actionability#enabled).
901
901
 
902
- **NOTE**: If you need to assert that an element is enabled, prefer [`method: LocatorAssertions.toBeEnabled`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
902
+ **NOTE**: If you need to assert that an element is enabled, prefer [LocatorAssertions#to_be_enabled](./locator_assertions#to_be_enabled) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
903
903
 
904
904
  **Usage**
905
905
 
@@ -916,7 +916,7 @@ def hidden?(timeout: nil)
916
916
 
917
917
  Returns whether the element is hidden, the opposite of [visible](https://playwright.dev/python/docs/actionability#visible).
918
918
 
919
- **NOTE**: If you need to assert that element is hidden, prefer [`method: LocatorAssertions.toBeHidden`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
919
+ **NOTE**: If you need to assert that element is hidden, prefer [LocatorAssertions#to_be_hidden](./locator_assertions#to_be_hidden) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
920
920
 
921
921
  **Usage**
922
922
 
@@ -933,7 +933,7 @@ def visible?(timeout: nil)
933
933
 
934
934
  Returns whether the element is [visible](https://playwright.dev/python/docs/actionability#visible).
935
935
 
936
- **NOTE**: If you need to assert that element is visible, prefer [`method: LocatorAssertions.toBeVisible`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
936
+ **NOTE**: If you need to assert that element is visible, prefer [LocatorAssertions#to_be_visible](./locator_assertions#to_be_visible) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
937
937
 
938
938
  **Usage**
939
939
 
@@ -1071,19 +1071,17 @@ To press a special key, like `Control` or `ArrowDown`, use [Locator#press](./loc
1071
1071
 
1072
1072
  **Usage**
1073
1073
 
1074
- ```python sync title=example_1b7781d5527574a18d4b9812e3461203d2acc9ba7e09cbfd0ffbc4154e3f5971.py
1075
- locator.press_sequentially("hello") # types instantly
1076
- locator.press_sequentially("world", delay=100) # types slower, like a user
1077
-
1074
+ ```ruby
1075
+ element.press_sequentially("hello") # types instantly
1076
+ element.press_sequentially("world", delay: 100) # types slower, like a user
1078
1077
  ```
1079
1078
 
1080
1079
  An example of typing into a text field and then submitting the form:
1081
1080
 
1082
- ```python sync title=example_cc0a6b9aa95b97e5c17c4b114da10a29c7f6f793e99aee1ea2703636af6e24f9.py
1083
- locator = page.get_by_label("Password")
1084
- locator.press_sequentially("my password")
1085
- locator.press("Enter")
1086
-
1081
+ ```ruby
1082
+ element = page.get_by_label("Password")
1083
+ element.press_sequentially("my password")
1084
+ element.press("Enter")
1087
1085
  ```
1088
1086
 
1089
1087
  ## screenshot
@@ -1301,7 +1299,7 @@ def text_content(timeout: nil)
1301
1299
 
1302
1300
  Returns the [`node.textContent`](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent).
1303
1301
 
1304
- **NOTE**: If you need to assert text on the page, prefer [`method: LocatorAssertions.toHaveText`] to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
1302
+ **NOTE**: If you need to assert text on the page, prefer [LocatorAssertions#to_have_text](./locator_assertions#to_have_text) to avoid flakiness. See [assertions guide](https://playwright.dev/python/docs/test-assertions) for more details.
1305
1303
 
1306
1304
  ## type
1307
1305