Paste command using Selenium

孤者浪人 提交于 2019-12-18 17:03:28

问题


I'm using Python 2.7 and Selenium 2-44-0 on Windows 7. I'm looking for a quicker way of inputting text than using send_keys. Send_keys will print 1 letter at a time (which better imitates an actual user). I would like a way to print all of them out at once, as if the content was pasted.

For example, Sikuli has the following functionality:

paste("this will all populate the field at the same time")

I'm wondering if there's a way to write a method in Python that will have the same result. So, instead of:

el.send_keys("this will do 1 letter at a time")

Have something like

el.paste_keys("this will do the entire line at once")

Since the above command would require adding code to selenium functionality, it would prob make more sense to have a python method. Maybe something along the lines of:

def paste_keys(self, xpath, text):
    os.environ['CLIPBOARD'] = text
    el = self.driver.find_element_by_xpath(xpath)
    el.send_keys(Keys.CONTROL, 'v')

Using that environmental variable doesn't actually act as a 'copy', though, and I don't know how to set the clipboard from the code level without downloading 3rd party software.


回答1:


This works:

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')

There cannot be a space after %s, for it will add that to the copied text.



来源:https://stackoverflow.com/questions/28637931/paste-command-using-selenium

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!