Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
如何在Chromedriver/Selenium for Node.js中模拟键盘事件?_Node.js_Selenium_Selenium Chromedriver - Fatal编程技术网

如何在Chromedriver/Selenium for Node.js中模拟键盘事件?

如何在Chromedriver/Selenium for Node.js中模拟键盘事件?,node.js,selenium,selenium-chromedriver,Node.js,Selenium,Selenium Chromedriver,我正在尝试将图像文件自动上载到我没有更好的访问方式(FTP等)的服务器。我将Node.js与Selenium和Chromedriver一起使用,在我需要模拟特殊键之前,一切都进展顺利。我做了一些研究,到目前为止没有发现任何东西。Mac特定的答案对此没有问题 我在别的地方尝试过这个答案,但它对我不起作用: driver.findElement(webdriver.By.name(uploadName)) .click() .sendKeys(Keys.COMMAND

我正在尝试将图像文件自动上载到我没有更好的访问方式(FTP等)的服务器。我将Node.js与Selenium和Chromedriver一起使用,在我需要模拟特殊键之前,一切都进展顺利。我做了一些研究,到目前为止没有发现任何东西。Mac特定的答案对此没有问题

我在别的地方尝试过这个答案,但它对我不起作用:

driver.findElement(webdriver.By.name(uploadName))
        .click()
        .sendKeys(Keys.COMMAND + Keys.SHIFT + 'g')
        .sendKeys(imgPath)
        .sendKeys(Keys.RETURN);

它失败了,因为键未定义,但我还没有找到任何其他方法来获取命令。

经过进一步研究,这似乎是错误的方法。Selenium和Chromedriver并不真正支持操作系统级的交互,但有一种更简单的方法

driver.findElement(webdriver.By.name(uploadName)).sendKeys(imgPath);

这将以uploadName为目标,然后为其提供传递到sendKeys的文件路径。这将绕过杂乱的操作系统文件对话框。

您需要这些命令做什么?。你是想从剪贴板粘贴文件路径还是什么?特别是我需要向“文件打开”对话框发送密钥。CMD+SHIFT+G打开文件路径对话框,以便我可以发送文件路径的键。