BDD: Use :click-element instead of hints

This commit is contained in:
Florian Bruhin 2016-08-18 16:13:38 +02:00
parent 4345d60ff1
commit a06dcc7f0b
19 changed files with 57 additions and 77 deletions

View File

@ -5,7 +5,7 @@
<body> <body>
<p>Using <code>:prompt-open-download</code> with a file that has a loooooong filename</p> <p>Using <code>:prompt-open-download</code> with a file that has a loooooong filename</p>
<p> <p>
<a href="/response-headers?Content-Disposition=download;%20filename%2A%3DUTF-8%27%27I%2527ve%2520actually%2520felt%2520slightly%2520uncomfortable%2520at%2520TED%2520for%2520the%2520last%2520two%2520days%252C%2520because%2520there%2527s%2520a%2520lot%2520of%2520vision%2520going%2520on%252C%2520right%253F%2520And%2520I%2520am%2520not%2520a%2520visionary.%2520I%2520do%2520not%2520have%2520a%2520five-year%2520plan.%2520I%2527m%2520an%2520engineer.%2520And%2520I%2520think%2520it%2527s%2520really%2520--%2520I%2520mean%2520--%2520I%2527m%2520perfectly%2520happy%2520with%2520all%2520the%2520people%2520who%2520are%2520walking%2520around%2520and%2520just%2520staring%2520at%2520the%2520clouds%2520and%2520looking%2520at%2520the%2520stars%2520and%2520saying%252C%2520%2522I%2520want%2520to%2520go%2520there.%2522%2520But%2520I%2527m%2520looking%2520at%2520the%2520ground%252C%2520and%2520I%2520want%2520to%2520fix%2520the%2520pothole%2520that%2527s%2520right%2520in%2520front%2520of%2520me%2520before%2520I%2520fall%2520in.%2520This%2520is%2520the%2520kind%2520of%2520person%2520I%2520am.txt"> <a href="/response-headers?Content-Disposition=download;%20filename%2A%3DUTF-8%27%27I%2527ve%2520actually%2520felt%2520slightly%2520uncomfortable%2520at%2520TED%2520for%2520the%2520last%2520two%2520days%252C%2520because%2520there%2527s%2520a%2520lot%2520of%2520vision%2520going%2520on%252C%2520right%253F%2520And%2520I%2520am%2520not%2520a%2520visionary.%2520I%2520do%2520not%2520have%2520a%2520five-year%2520plan.%2520I%2527m%2520an%2520engineer.%2520And%2520I%2520think%2520it%2527s%2520really%2520--%2520I%2520mean%2520--%2520I%2527m%2520perfectly%2520happy%2520with%2520all%2520the%2520people%2520who%2520are%2520walking%2520around%2520and%2520just%2520staring%2520at%2520the%2520clouds%2520and%2520looking%2520at%2520the%2520stars%2520and%2520saying%252C%2520%2522I%2520want%2520to%2520go%2520there.%2522%2520But%2520I%2527m%2520looking%2520at%2520the%2520ground%252C%2520and%2520I%2520want%2520to%2520fix%2520the%2520pothole%2520that%2527s%2520right%2520in%2520front%2520of%2520me%2520before%2520I%2520fall%2520in.%2520This%2520is%2520the%2520kind%2520of%2520person%2520I%2520am.txt" id="long-link">
Download me! Download me!
</a> </a>
</p> </p>

View File

@ -8,6 +8,6 @@
<title>Simple link</title> <title>Simple link</title>
</head> </head>
<body> <body>
<a href="/data/hello.txt">Follow me!</a> <a href="/data/hello.txt" id="link">Follow me!</a>
</body> </body>
</html> </html>

View File

@ -6,6 +6,6 @@
<title>Simple input</title> <title>Simple input</title>
</head> </head>
<body> <body>
<form><input></input></form> <form><input id="qute-input"></input></form>
</body> </body>
</html> </html>

View File

@ -5,6 +5,6 @@
<title>A link to use hints on</title> <title>A link to use hints on</title>
</head> </head>
<body> <body>
<a href="/data/hello.txt" target="_blank">Follow me!</a> <a href="/data/hello.txt" target="_blank" id="link">Follow me!</a>
</body> </body>
</html> </html>

View File

@ -2,8 +2,8 @@
<html> <html>
<body> <body>
<button onclick="openWin()">Open "myWindow"</button> <button onclick="openWin()" id="open-button">Open "myWindow"</button>
<button onclick="closeWin()">Close "myWindow"</button> <button onclick="closeWin()" id="close-button">Close "myWindow"</button>
<script> <script>
var myWindow; var myWindow;

View File

@ -7,7 +7,7 @@
<body> <body>
<h1 id="top">Top</h1> <h1 id="top">Top</h1>
<a href="#top">Top</a> <a href="#top">Top</a>
<a href="#bottom">Bottom</a> <a href="#bottom" id="bottom">Bottom</a>
<div style="height: 3000px; width: 3000px;">Holy Grail</div> <div style="height: 3000px; width: 3000px;">Holy Grail</div>
<div style="height: 3000px; width: 3000px;">Waldo</div> <div style="height: 3000px; width: 3000px;">Waldo</div>
<div style="height: 3000px; width: 3000px;">Holy Grail</div> <div style="height: 3000px; width: 3000px;">Holy Grail</div>

View File

@ -33,6 +33,6 @@
</script> </script>
</head> </head>
<body> <body>
<input type="button" onclick="get_location()" value="Get position"> <input type="button" onclick="get_location()" value="Get position" id="button">
</body> </body>
</html> </html>

View File

@ -10,6 +10,6 @@
</script> </script>
</head> </head>
<body> <body>
<input type="button" onclick="do_alert()" value="Show alert"> <input type="button" onclick="do_alert()" value="Show alert" id="button">
</body> </body>
</html> </html>

View File

@ -10,6 +10,6 @@
</script> </script>
</head> </head>
<body> <body>
<input type="button" onclick="prompter()" value="Show prompt"> <input type="button" onclick="prompter()" value="Show prompt" id="button">
</body> </body>
</html> </html>

View File

@ -10,6 +10,6 @@
</script> </script>
</head> </head>
<body> <body>
<input type="button" onclick="prompter()" value="Show prompt"> <input type="button" onclick="prompter()" value="Show prompt" id="button">
</body> </body>
</html> </html>

View File

@ -34,6 +34,6 @@
</script> </script>
</head> </head>
<body> <body>
<input type="button" onclick="get_notification_permission()" value="Get notification permission"> <input type="button" onclick="get_notification_permission()" value="Get notification permission" id="button">
</body> </body>
</html> </html>

View File

@ -201,8 +201,7 @@ Feature: Downloading things from a website.
Scenario: Directly open a download with a very long filename Scenario: Directly open a download with a very long filename
When I set storage -> prompt-download-directory to true When I set storage -> prompt-download-directory to true
And I open data/downloads/issue1725.html And I open data/downloads/issue1725.html
And I run :hint And I run :click-element id long-link
And I run :follow-hint a
And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=* mode=<PromptMode.download: 5> text='Save file to:'>, *" in the log And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=* mode=<PromptMode.download: 5> text='Save file to:'>, *" in the log
And I directly open the download And I directly open the download
And I wait until the download is finished And I wait until the download is finished

View File

@ -12,10 +12,8 @@ Feature: Javascript stuff
Scenario: Closing a JS window twice (issue 906) Scenario: Closing a JS window twice (issue 906)
When I open about:blank When I open about:blank
And I open data/javascript/issue906.html in a new tab And I open data/javascript/issue906.html in a new tab
And I run :hint And I run :click-element id open-button
And I run :follow-hint a
And I wait for "Changing title for idx 2 to 'about:blank'" in the log And I wait for "Changing title for idx 2 to 'about:blank'" in the log
And I run :tab-focus 2 And I run :tab-focus 2
And I run :hint And I run :click-element id close-button
And I run :follow-hint s
Then "Requested to close * which does not exist!" should be logged Then "Requested to close * which does not exist!" should be logged

View File

@ -372,8 +372,7 @@ Feature: Various utility commands.
@pyqt>=5.3.1 @pyqt>=5.3.1
Scenario: Focusing download widget via Tab (original issue) Scenario: Focusing download widget via Tab (original issue)
When I open data/prompt/jsprompt.html When I open data/prompt/jsprompt.html
And I run :hint And I run :click-element id button
And I run :follow-hint a
And I wait for "Entering mode KeyMode.prompt *" in the log And I wait for "Entering mode KeyMode.prompt *" in the log
And I press the key "<Tab>" And I press the key "<Tab>"
And I press the key "<Ctrl-C>" And I press the key "<Ctrl-C>"
@ -519,8 +518,7 @@ Feature: Various utility commands.
When I run :hint When I run :hint
And I run :leave-mode And I run :leave-mode
And I run :repeat-command And I run :repeat-command
And I run :follow-hint a And I run :click-element id link
And I wait until data/hello.txt is loaded
Then the following tabs should be open: Then the following tabs should be open:
- data/hints/link_blank.html - data/hints/link_blank.html
- data/hello.txt (active) - data/hello.txt (active)

View File

@ -8,7 +8,7 @@ Feature: Prompts
Scenario: Javascript alert Scenario: Javascript alert
When I open data/prompt/jsalert.html When I open data/prompt/jsalert.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-accept And I run :prompt-accept
Then the javascript message "Alert done" should be logged Then the javascript message "Alert done" should be logged
@ -16,26 +16,26 @@ Feature: Prompts
Scenario: Using content -> ignore-javascript-alert Scenario: Using content -> ignore-javascript-alert
When I set content -> ignore-javascript-alert to true When I set content -> ignore-javascript-alert to true
And I open data/prompt/jsalert.html And I open data/prompt/jsalert.html
And I click the button And I run :click-element id button
Then the javascript message "Alert done" should be logged Then the javascript message "Alert done" should be logged
Scenario: Javascript confirm - yes Scenario: Javascript confirm - yes
When I open data/prompt/jsconfirm.html When I open data/prompt/jsconfirm.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-yes And I run :prompt-yes
Then the javascript message "confirm reply: true" should be logged Then the javascript message "confirm reply: true" should be logged
Scenario: Javascript confirm - no Scenario: Javascript confirm - no
When I open data/prompt/jsconfirm.html When I open data/prompt/jsconfirm.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-no And I run :prompt-no
Then the javascript message "confirm reply: false" should be logged Then the javascript message "confirm reply: false" should be logged
Scenario: Javascript confirm - aborted Scenario: Javascript confirm - aborted
When I open data/prompt/jsconfirm.html When I open data/prompt/jsconfirm.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :leave-mode And I run :leave-mode
Then the javascript message "confirm reply: false" should be logged Then the javascript message "confirm reply: false" should be logged
@ -43,7 +43,7 @@ Feature: Prompts
@pyqt>=5.3.1 @pyqt>=5.3.1
Scenario: Javascript prompt Scenario: Javascript prompt
When I open data/prompt/jsprompt.html When I open data/prompt/jsprompt.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I press the keys "prompt test" And I press the keys "prompt test"
And I run :prompt-accept And I run :prompt-accept
@ -52,7 +52,7 @@ Feature: Prompts
@pyqt>=5.3.1 @pyqt>=5.3.1
Scenario: Rejected javascript prompt Scenario: Rejected javascript prompt
When I open data/prompt/jsprompt.html When I open data/prompt/jsprompt.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I press the keys "prompt test" And I press the keys "prompt test"
And I run :leave-mode And I run :leave-mode
@ -66,7 +66,7 @@ Feature: Prompts
When selection is supported When selection is supported
And I put "insert test" into the primary selection And I put "insert test" into the primary selection
And I open data/prompt/jsprompt.html And I open data/prompt/jsprompt.html
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I press the keys "<Shift-Insert>" And I press the keys "<Shift-Insert>"
And I run :prompt-accept And I run :prompt-accept
@ -76,7 +76,7 @@ Feature: Prompts
Scenario: Using content -> ignore-javascript-prompt Scenario: Using content -> ignore-javascript-prompt
When I set content -> ignore-javascript-prompt to true When I set content -> ignore-javascript-prompt to true
And I open data/prompt/jsprompt.html And I open data/prompt/jsprompt.html
And I click the button And I run :click-element id button
Then the javascript message "Prompt reply: null" should be logged Then the javascript message "Prompt reply: null" should be logged
# SSL # SSL
@ -119,21 +119,21 @@ Feature: Prompts
Scenario: Always rejecting geolocation Scenario: Always rejecting geolocation
When I set content -> geolocation to false When I set content -> geolocation to false
And I open data/prompt/geolocation.html in a new tab And I open data/prompt/geolocation.html in a new tab
And I click the button And I run :click-element id button
Then the javascript message "geolocation permission denied" should be logged Then the javascript message "geolocation permission denied" should be logged
@ci @not_osx @ci @not_osx
Scenario: Always accepting geolocation Scenario: Always accepting geolocation
When I set content -> geolocation to true When I set content -> geolocation to true
And I open data/prompt/geolocation.html in a new tab And I open data/prompt/geolocation.html in a new tab
And I click the button And I run :click-element id button
Then the javascript message "geolocation permission denied" should not be logged Then the javascript message "geolocation permission denied" should not be logged
@ci @not_osx @ci @not_osx
Scenario: geolocation with ask -> true Scenario: geolocation with ask -> true
When I set content -> geolocation to ask When I set content -> geolocation to ask
And I open data/prompt/geolocation.html in a new tab And I open data/prompt/geolocation.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-yes And I run :prompt-yes
Then the javascript message "geolocation permission denied" should not be logged Then the javascript message "geolocation permission denied" should not be logged
@ -141,7 +141,7 @@ Feature: Prompts
Scenario: geolocation with ask -> false Scenario: geolocation with ask -> false
When I set content -> geolocation to ask When I set content -> geolocation to ask
And I open data/prompt/geolocation.html in a new tab And I open data/prompt/geolocation.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-no And I run :prompt-no
Then the javascript message "geolocation permission denied" should be logged Then the javascript message "geolocation permission denied" should be logged
@ -149,7 +149,7 @@ Feature: Prompts
Scenario: geolocation with ask -> abort Scenario: geolocation with ask -> abort
When I set content -> geolocation to ask When I set content -> geolocation to ask
And I open data/prompt/geolocation.html in a new tab And I open data/prompt/geolocation.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :leave-mode And I run :leave-mode
Then the javascript message "geolocation permission denied" should be logged Then the javascript message "geolocation permission denied" should be logged
@ -159,19 +159,19 @@ Feature: Prompts
Scenario: Always rejecting notifications Scenario: Always rejecting notifications
When I set content -> notifications to false When I set content -> notifications to false
And I open data/prompt/notifications.html in a new tab And I open data/prompt/notifications.html in a new tab
And I click the button And I run :click-element id button
Then the javascript message "notification permission denied" should be logged Then the javascript message "notification permission denied" should be logged
Scenario: Always accepting notifications Scenario: Always accepting notifications
When I set content -> notifications to true When I set content -> notifications to true
And I open data/prompt/notifications.html in a new tab And I open data/prompt/notifications.html in a new tab
And I click the button And I run :click-element id button
Then the javascript message "notification permission granted" should be logged Then the javascript message "notification permission granted" should be logged
Scenario: notifications with ask -> false Scenario: notifications with ask -> false
When I set content -> notifications to ask When I set content -> notifications to ask
And I open data/prompt/notifications.html in a new tab And I open data/prompt/notifications.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-no And I run :prompt-no
Then the javascript message "notification permission denied" should be logged Then the javascript message "notification permission denied" should be logged
@ -179,7 +179,7 @@ Feature: Prompts
Scenario: notifications with ask -> true Scenario: notifications with ask -> true
When I set content -> notifications to ask When I set content -> notifications to ask
And I open data/prompt/notifications.html in a new tab And I open data/prompt/notifications.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :prompt-yes And I run :prompt-yes
Then the javascript message "notification permission granted" should be logged Then the javascript message "notification permission granted" should be logged
@ -189,7 +189,7 @@ Feature: Prompts
Scenario: notifications with ask -> abort Scenario: notifications with ask -> abort
When I set content -> notifications to ask When I set content -> notifications to ask
And I open data/prompt/notifications.html in a new tab And I open data/prompt/notifications.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :leave-mode And I run :leave-mode
Then the javascript message "notification permission aborted" should be logged Then the javascript message "notification permission aborted" should be logged
@ -197,7 +197,7 @@ Feature: Prompts
Scenario: answering notification after closing tab Scenario: answering notification after closing tab
When I set content -> notifications to ask When I set content -> notifications to ask
And I open data/prompt/notifications.html in a new tab And I open data/prompt/notifications.html in a new tab
And I click the button And I run :click-element id button
And I wait for a prompt And I wait for a prompt
And I run :tab-close And I run :tab-close
And I wait for "Leaving mode KeyMode.yesno (reason: aborted)" in the log And I wait for "Leaving mode KeyMode.yesno (reason: aborted)" in the log

View File

@ -806,8 +806,7 @@ Feature: Tab management
And I set tabs -> background-tabs to false And I set tabs -> background-tabs to false
And I open about:blank And I open about:blank
And I open data/hints/html/simple.html in a new tab And I open data/hints/html/simple.html in a new tab
And I run :hint all tab And I run :click-element id link --target=tab
And I run :follow-hint a
And I wait until data/hello.txt is loaded And I wait until data/hello.txt is loaded
Then the following tabs should be open: Then the following tabs should be open:
- about:blank - about:blank
@ -819,8 +818,7 @@ Feature: Tab management
And I set tabs -> background-tabs to false And I set tabs -> background-tabs to false
And I open about:blank And I open about:blank
And I open data/hints/html/simple.html in a new tab And I open data/hints/html/simple.html in a new tab
And I run :hint all tab And I run :click-element id link --target=tab
And I run :follow-hint a
And I wait until data/hello.txt is loaded And I wait until data/hello.txt is loaded
Then the following tabs should be open: Then the following tabs should be open:
- about:blank - about:blank
@ -832,8 +830,7 @@ Feature: Tab management
And I set tabs -> background-tabs to false And I set tabs -> background-tabs to false
And I open about:blank And I open about:blank
And I open data/hints/html/simple.html in a new tab And I open data/hints/html/simple.html in a new tab
And I run :hint all tab And I run :click-element id link --target=tab
And I run :follow-hint a
And I wait until data/hello.txt is loaded And I wait until data/hello.txt is loaded
Then the following tabs should be open: Then the following tabs should be open:
- data/hello.txt (active) - data/hello.txt (active)
@ -846,8 +843,7 @@ Feature: Tab management
And I open data/hints/html/simple.html And I open data/hints/html/simple.html
And I open about:blank in a new tab And I open about:blank in a new tab
And I run :tab-focus last And I run :tab-focus last
And I run :hint all tab And I run :click-element id link --target=tab
And I run :follow-hint a
And I wait until data/hello.txt is loaded And I wait until data/hello.txt is loaded
Then the following tabs should be open: Then the following tabs should be open:
- data/hints/html/simple.html - data/hints/html/simple.html

View File

@ -33,12 +33,6 @@ def wait_ssl_page_finished_loading(quteproc, ssl_server):
load_status='warn') load_status='warn')
@bdd.when("I click the button")
def click_button(quteproc):
quteproc.send_cmd(':hint')
quteproc.send_cmd(':follow-hint a')
@bdd.when("I wait for a prompt") @bdd.when("I wait for a prompt")
def wait_for_prompt(quteproc): def wait_for_prompt(quteproc):
quteproc.wait_for(message='Entering mode KeyMode.* (reason: question ' quteproc.wait_for(message='Entering mode KeyMode.* (reason: question '

View File

@ -219,9 +219,7 @@ Feature: Yanking and pasting.
Scenario: Inserting text into an empty text field Scenario: Inserting text into an empty text field
When I open data/paste_primary.html When I open data/paste_primary.html
# Click the text field And I run :click-element id qute-textarea
And I run :hint all
And I run :follow-hint a
And I wait for "Clicked editable element!" in the log And I wait for "Clicked editable element!" in the log
And I run :insert-text Hello world And I run :insert-text Hello world
# Compare # Compare
@ -230,9 +228,7 @@ Feature: Yanking and pasting.
Scenario: Inserting text into a text field at specific position Scenario: Inserting text into a text field at specific position
When I open data/paste_primary.html When I open data/paste_primary.html
And I set the text field to "one two three four" And I set the text field to "one two three four"
# Click the text field And I run :click-element id qute-textarea
And I run :hint all
And I run :follow-hint a
And I wait for "Clicked editable element!" in the log And I wait for "Clicked editable element!" in the log
# Move to the beginning and two characters to the right # Move to the beginning and two characters to the right
And I press the keys "<Home>" And I press the keys "<Home>"
@ -244,9 +240,7 @@ Feature: Yanking and pasting.
Scenario: Inserting text into a text field with undo Scenario: Inserting text into a text field with undo
When I open data/paste_primary.html When I open data/paste_primary.html
# Click the text field And I run :click-element id qute-textarea
And I run :hint all
And I run :follow-hint a
And I wait for "Clicked editable element!" in the log And I wait for "Clicked editable element!" in the log
# Paste and undo # Paste and undo
And I run :insert-text This text should be undone And I run :insert-text This text should be undone
@ -264,9 +258,7 @@ Feature: Yanking and pasting.
Scenario: Inserting text with a read-only field Scenario: Inserting text with a read-only field
When I open data/paste_primary.html When I open data/paste_primary.html
# Click the text field And I run :click-element id qute-textarea-noedit
And I run :hint all
And I run :follow-hint s
And I wait for "Clicked non-editable element!" in the log And I wait for "Clicked non-editable element!" in the log
And I run :enter-mode insert And I run :enter-mode insert
And I run :insert-text test And I run :insert-text test

View File

@ -25,20 +25,23 @@ import json
import pytest import pytest
@pytest.mark.parametrize('file_name, source, input_text, auto_insert', [ @pytest.mark.parametrize(['file_name', 'elem_id', 'source', 'input_text',
('textarea.html', 'clipboard', 'qutebrowser', 'false'), 'auto_insert'], [
('textarea.html', 'keypress', 'superqutebrowser', 'false'), ('textarea.html', 'qute-textarea', 'clipboard', 'qutebrowser', 'false'),
('input.html', 'clipboard', 'amazingqutebrowser', 'false'), ('textarea.html', 'qute-textarea', 'keypress', 'superqutebrowser',
('input.html', 'keypress', 'awesomequtebrowser', 'false'), 'false'),
('autofocus.html', 'keypress', 'cutebrowser', 'true'), ('input.html', 'qute-input', 'clipboard', 'amazingqutebrowser', 'false'),
('input.html', 'qute-input', 'keypress', 'awesomequtebrowser', 'false'),
('autofocus.html', 'qute-input-autofocus', 'keypress', 'cutebrowser',
'true'),
]) ])
def test_insert_mode(file_name, source, input_text, auto_insert, quteproc): def test_insert_mode(file_name, elem_id, source, input_text, auto_insert,
quteproc):
url_path = 'data/insert_mode_settings/html/{}'.format(file_name) url_path = 'data/insert_mode_settings/html/{}'.format(file_name)
quteproc.open_path(url_path) quteproc.open_path(url_path)
quteproc.set_setting('input', 'auto-insert-mode', auto_insert) quteproc.set_setting('input', 'auto-insert-mode', auto_insert)
quteproc.send_cmd(':hint all') quteproc.send_cmd(':click-element id {}'.format(elem_id))
quteproc.send_cmd(':follow-hint a')
quteproc.wait_for(message='Clicked editable element!') quteproc.wait_for(message='Clicked editable element!')
quteproc.send_cmd(':debug-set-fake-clipboard') quteproc.send_cmd(':debug-set-fake-clipboard')