Fix add caption
All checks were successful
Push image to registry / build-image (push) Successful in 8m4s
All checks were successful
Push image to registry / build-image (push) Successful in 8m4s
This commit is contained in:
@ -287,8 +287,29 @@ abstract class BrowserJob implements ShouldQueue
|
||||
}
|
||||
}
|
||||
|
||||
public function typeText(Browser $browser, string $text, string $querySelector): void
|
||||
/**
|
||||
* Parse a string for use in JavaScript.
|
||||
*
|
||||
* @param string $string The string to parse.
|
||||
* @return string The parsed string.
|
||||
*/
|
||||
private function parseJavaScriptString(string $string): string
|
||||
{
|
||||
return str_replace("'", "\\'", $string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Type text into an input field using JavaScript.
|
||||
*
|
||||
* @param Browser $browser
|
||||
* @param string $text The text to type.
|
||||
* @param string $querySelector The CSS selector for the input field.
|
||||
*/
|
||||
public function setInputValue(Browser $browser, string $text, string $querySelector): void
|
||||
{
|
||||
$text = $this->parseJavaScriptString($text);
|
||||
$querySelector = $this->parseJavaScriptString($querySelector);
|
||||
|
||||
$browser->script("
|
||||
let element = document.querySelector('{$querySelector}');
|
||||
if (element) {
|
||||
@ -300,4 +321,31 @@ abstract class BrowserJob implements ShouldQueue
|
||||
}
|
||||
");
|
||||
}
|
||||
|
||||
/**
|
||||
* Paste text into an element using JavaScript.
|
||||
* Can be useful for non input elements that need to get text. For example works
|
||||
* with `contenteditable` elements.
|
||||
*
|
||||
* @param Browser $browser
|
||||
* @param string $text The text to paste.
|
||||
* @param string $querySelector The CSS selector for the input field.
|
||||
*/
|
||||
public function pasteText(Browser $browser, string $text, string $querySelector): void
|
||||
{
|
||||
$text = $this->parseJavaScriptString($text);
|
||||
$querySelector = $this->parseJavaScriptString($querySelector);
|
||||
|
||||
$browser->script("
|
||||
var el = document.querySelector('{$querySelector}'), text = \"{$text}\";
|
||||
el.focus();
|
||||
const dataTransfer = new DataTransfer();
|
||||
dataTransfer.setData('text', text);
|
||||
const event = new ClipboardEvent('paste', {
|
||||
clipboardData: dataTransfer,
|
||||
bubbles: true
|
||||
});
|
||||
el.dispatchEvent(event)
|
||||
");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user