Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模拟按住ctrl键并在X秒后用Javasctipt将其释放_Javascript_Selenium_Events_Keyboard - Fatal编程技术网

Javascript 模拟按住ctrl键并在X秒后用Javasctipt将其释放

Javascript 模拟按住ctrl键并在X秒后用Javasctipt将其释放,javascript,selenium,events,keyboard,Javascript,Selenium,Events,Keyboard,我试图模拟用户点击ctrl按钮,按住它点击X秒,然后释放它的情况。 我如何使用JavaScript实现它?我尝试了下面的代码,但不起作用 var sourceElement = document.querySelector("some selector"); var evt = new KeyboardEvent('keydown', {key: \"17\" }); sourceElement.dispatchEvent(evt); // wait X

我试图模拟用户点击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);

您可以使用
操作
,而不是通过JavascriptExecutor运行此操作,例如如下所示

const actions = driver.actions();

actions.keyDown(CTRL)
                 .pause(milliseconds)
                 .keyUp(CTRL)
                 .perform();
您可以使用以下代码:

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

你怎么知道它不起作用?请提供一份报告。这对我来说很有用:我没有写出全部的上下文。我的床。我正在用Selenium编写自动化测试,并尝试使用executeScript函数来模拟上面的测试:JavascriptExecutor js=(JavascriptExecutor)驱动程序;js.executeScript(脚本);当脚本是上面的代码时。当我运行测试时,它不起作用。有什么想法吗?获得帮助的最佳方式是创建一个描述预期行为和实际行为的列表。目前我还不清楚这个问题。你的代码片段适合我。您不应该在注释中发布代码。不可读。是的,我很熟悉这个。在我的例子中,我使用JS模拟拖放,因为它不适用于Selenium API。我需要在拖动时按住ctrl键,然后在拖放后释放它。这就是我需要使用JS的原因。在您的代码中,您在哪里模拟拖放?你的问题看起来就像CTRL键。是的,我对这个很熟悉。在我的例子中,我使用JS模拟拖放,因为它不适用于Selenium API。我需要在拖动时按住ctrl键,然后在拖放后释放它。这就是为什么我需要用JS做这件事的原因