我在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')
但是,使用该环境变量实际上并不能充当“副本”,而且我不知道如何在不下载第三方软件的情况下从代码级别设置剪贴板。
这有效:
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后不能有空格,因为它将空格添加到复制的文本中。