模拟按住 ctrl 按钮并在 X 秒后使用 Javascript 释放它

Posted

技术标签:

【中文标题】模拟按住 ctrl 按钮并在 X 秒后使用 Javascript 释放它【英文标题】:Simulate holding ctrl button and release it after X seconds with Javasctipt 【发布时间】:2021-08-13 02:43:51 【问题描述】:

我正在尝试模拟用户单击 ctrl 按钮的情况,按住它单击 X 秒,然后释放它。 我怎样才能用 javascript 做到这一点?我尝试了下面的代码,但它不起作用。

var sourceElement = document.querySelector("some selector");
var evt = new KeyboardEvent('keydown', key: \"17\" ); 
sourceElement.dispatchEvent(evt);
// wait X seconds
var evt2 = new KeyboardEvent('keyup',  key: \"17\" );
sourceElement.dispatchEvent(evt2);

【问题讨论】:

你怎么知道它不起作用?请提供minimal reproducible example。它对我有用:jsfiddle.net/aLbv1eqo/2 我没有写完整的上下文。我的床。我正在用 Selenium 编写自动化测试,并尝试使用 executeScript 函数模拟上述内容:JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(脚本);当脚本是上面的代码时。当我运行测试时它不起作用。有什么想法吗? 获得帮助的最佳方式是创建一个minimal reproducible example,其中包含对预期行为和实际行为的描述。目前这个问题对我来说还不清楚。你的代码 sn-p 对我有用。您不应该在评论中发布代码。不可读。 【参考方案1】:

您可以使用actions,而不是通过JavascriptExecutor运行它,例如如下。

const actions = driver.actions();

actions.keyDown(CTRL)
                 .pause(milliseconds)
                 .keyUp(CTRL)
                 .perform();

【讨论】:

是的,我对此很熟悉。就我而言,我使用 JS 模拟拖放,因为它不适用于 Selenium API。而且我需要在拖放时按住 ctrl 按钮并在拖放后释放它。这就是为什么我需要用 JS 来做的原因。 您在代码中的哪个位置模拟拖放?你的问题看起来只是 CTRL 按钮。【参考方案2】:

您可以使用此代码:

Actions action = new Actions(driver);
action.clickAndHold(sourceElement).build().perform();

【讨论】:

是的,我对此很熟悉。就我而言,我使用 JS 模拟拖放,因为它不适用于 Selenium API。而且我需要在拖放时按住 ctrl 按钮并在拖放后释放它。这就是为什么我需要用 JS 来做的原因

以上是关于模拟按住 ctrl 按钮并在 X 秒后使用 Javascript 释放它的主要内容,如果未能解决你的问题,请参考以下文章

在 x 秒后闪烁自动暂停视频并在选定选项后播放

xcode6.1模拟器的storyboard应该怎么用

winform怎么实现Ctrl键和回车键绑定一个按钮。意思就是同时按住两个键,相当于点击butto

表单执行串口命令并在5秒后退出

如何在 C# 中模拟鼠标按钮按下并按住

Sencha Touch:工具栏可按住多个按钮并在超过一定数量时溢出