playwright-ruby-client 1.39.0 → 1.39.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.
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