我必须在应用程序中复制一个对象(文本/形状)并将其粘贴到另一个区域。
在这种情况下,我必须粘贴到webElement上。所以我不能使用它-
driver.findElement(By.id("")).sendKeys(Keys.chord(Keys.CONTROL,"v"));
所以我正在硒中使用Actions类-selenium.interactions.Actions
actions.keyDown(command).sendKeys("c").keyUp(command).build().perform();
此方法在Chrome72
和chromedriver 72
下不起作用。
我已经面对这个问题很多个月了。并上网浏览解决方案,并且有很多网站都在谈论它-
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/5946
但是找不到任何答案,并且在最新版本的chrome和chromedriver中仍然存在该问题。
答案 0 :(得分:0)
G Chrome中似乎有一个语法可以阻止此快捷方式:
https://bugs.chromium.org/p/chromedriver/issues/detail?id=581
而且不会得到解决。
也许您可以找到解决方案。就Ctrl + T而言,我使用
npm i nexe@next -g
另一种选择是使用机械手,但是它只能在活动窗口中使用。在paralell测试中将无法使用。如果您同时工作,它将不起作用。这会将命令发送到计算机,而不是浏览器。并且您的窗口必须处于活动状态:
TLS Alert read: fatal: access denied
TLS_accept: failed in SSLv3 read client certificate A
rlm_eap: SSL error error: 14094419: SSL routines: SSL3_READ_BYTES: tlsv1 alert access denied
我希望这会有所帮助。正如我所说的,它并非每次都起作用;)
答案 1 :(得分:0)
我建议在复制之前在代码中使用Control + a键,因为您可能需要先选择整个文本,然后再复制文本。
driver.findElement(By.id("xyz")).sendKeys(Keys.chord(Keys.CONTROL, "a"));
driver.findElement(By.id("xyz")).sendKeys(Keys.chord(Keys.CONTROL, "c"));