使用 Selenium 粘贴命令
Paste command using Selenium
我在 Windows 7 上使用 Python 2.7 和 Selenium 2-44-0。我正在寻找一种比使用 send_keys 更快的文本输入方式。 Send_keys 将一次打印 1 个字母(更好地模仿实际用户)。我想要一种方法可以一次将它们全部打印出来,就好像内容是粘贴的一样。
例如,Sikuli 具有以下功能:
paste("this will all populate the field at the same time")
我想知道是否有一种方法可以在 Python 中编写一个具有相同结果的方法。所以,而不是:
el.send_keys("this will do 1 letter at a time")
有类似
el.paste_keys("this will do the entire line at once")
由于上述命令需要向 selenium 功能添加代码,因此使用 python 方法可能更有意义。也许是这样的:
def paste_keys(self, xpath, text):
os.environ['CLIPBOARD'] = text
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL, 'v')
不过,使用该环境变量实际上并不能起到 'copy' 的作用,而且我不知道如何在不下载第 3 方软件的情况下从代码级别设置剪贴板。
这个有效:
from selenium.webdriver.common.keys import Keys
def paste_keys(self, xpath, text):
os.system("echo %s| clip" % text.strip())
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL, 'v')
%s 后不能有 space,因为它会将其添加到复制的文本中。
我在 Windows 7 上使用 Python 2.7 和 Selenium 2-44-0。我正在寻找一种比使用 send_keys 更快的文本输入方式。 Send_keys 将一次打印 1 个字母(更好地模仿实际用户)。我想要一种方法可以一次将它们全部打印出来,就好像内容是粘贴的一样。
例如,Sikuli 具有以下功能:
paste("this will all populate the field at the same time")
我想知道是否有一种方法可以在 Python 中编写一个具有相同结果的方法。所以,而不是:
el.send_keys("this will do 1 letter at a time")
有类似
el.paste_keys("this will do the entire line at once")
由于上述命令需要向 selenium 功能添加代码,因此使用 python 方法可能更有意义。也许是这样的:
def paste_keys(self, xpath, text):
os.environ['CLIPBOARD'] = text
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL, 'v')
不过,使用该环境变量实际上并不能起到 'copy' 的作用,而且我不知道如何在不下载第 3 方软件的情况下从代码级别设置剪贴板。
这个有效:
from selenium.webdriver.common.keys import Keys
def paste_keys(self, xpath, text):
os.system("echo %s| clip" % text.strip())
el = self.driver.find_element_by_xpath(xpath)
el.send_keys(Keys.CONTROL, 'v')
%s 后不能有 space,因为它会将其添加到复制的文本中。