使用Selenium 2执行复制和粘贴

问题描述 投票:17回答:4

有没有办法使用Selenium 2和Python绑定执行复制和粘贴?

我突出显示了要复制的元素,然后执行以下操作

copyActionChain.key_down(Keys.COMMAND).send_keys('C').key_up(Keys.COMMAND)

但是,不会复制突出显示的文本。

selenium selenium-webdriver
4个回答
17
投票

实际上很简单:

from selenium.webdriver.common.keys import Keys

elem = find_element_by_name("our_element")
elem.send_keys("bar")
elem.send_keys(Keys.CONTROL, 'a') #highlight all in box
elem.send_keys(Keys.CONTROL, 'c') #copy
elem.send_keys(Keys.CONTROL, 'v') #paste

我想这可能也可以扩展到其他命令


14
投票

要在Mac和PC上执行此操作,您可以使用这些备用键盘快捷键进行剪切,复制和粘贴。请注意,其中一些在物理Mac键盘上不可用,但由于传统的键盘快捷键而起作用。

Alternate keyboard shortcuts for cut, copy and paste on a Mac

  • Cut => control + delete,或control + K.
  • 复制=>控制+插入
  • 粘贴=> shift + insert或control + Y.

所以在Selenium(Ruby)中,选择元素中的文本然后将其复制到剪贴板大致类似于此。

# double click the element to select all it's text
element.double_click 

# copy the selected text to the clipboard using CTRL+INSERT
element.send_keys(:control, :insert)

4
投票

而不是使用实际的键盘快捷方式,我会让webdriver获取文本。您可以通过查找元素的内部文本来完成此操作。

WebElement element1 = wd.findElement(By.locatorType(locator));
String text = element1.getText();

这样您的测试项目就可以实际访问文本。这对于记录目的是有益的,或者可能只是为了确保文本说明您想要它说什么。

从这里你可以将元素的文本操作为一个字符串,这样你就可以完全控制你输入到你要粘贴的元素中的内容。现在就是

 element2.clear();
 element2.sendKeys(text);

其中element2是要将文本粘贴到的元素


3
投票

我目前无法在OSX上尝试这个,但它肯定适用于FF和Ubuntu:

import os
import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

with open('test.html', 'w') as fp:
    fp.write("""\
<html>
<body>
  <form>
    <input type="text" name="intext" value="ABC">
    <br>
    <input type="text" name="outtext">
  </form>
</body>
</html>
""")

driver = webdriver.Firefox()
driver.get('file:///{}/test.html'.format(os.getcwd()))
element1 = driver.find_element_by_name('intext')
element2 = driver.find_element_by_name('outtext')
time.sleep(1)
element1.send_keys(Keys.CONTROL, 'a')
time.sleep(1)
element1.send_keys(Keys.CONTROL, 'c')
time.sleep(1)
element2.send_keys(Keys.CONTROL, 'v')

sleep()语句只是为了能够看到步骤,它们当然不是程序运行所必需的。

ActionChain send_key只是切换到所选元素并在其上执行send_keys

© www.soinside.com 2019 - 2024. All rights reserved.