Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Performing a copy and paste with Selenium 2

Is there any way to perform a copy and paste using Selenium 2 and the Python bindings?

I've highlighted the element I want to copy and then I perform the following actions

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

However, the highlighted text isn't copied.

like image 690
aaronfalloon Avatar asked Jul 31 '12 23:07

aaronfalloon


People also ask

How do I copy and paste in Selenium?

Copy & Paste Text: When we need to copy some text from one text box to another, we select the text by pressing "CTRL+A" they copy the text using "CTRL+C" and paste the text in the new text box by simply clicking in the text box and pressing keys "CTRL+V".

How do I right click and copy in Selenium?

Selenium uses the Actions class to perform the right click action. The contextClick() is a method under Actions class to do the right click and once the menu opens, we can select an option from them via automation.


1 Answers

To do this on a Mac and on PC, you can use these alternate keyboard shortcuts for cut, copy and paste. Note that some of them aren't available on a physical Mac keyboard, but work because of legacy keyboard shortcuts.

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

  • Cut => control+delete, or control+K
  • Copy => control+insert
  • Paste => shift+insert, or control+Y

If this doesn't work, use Keys.META instead, which is the official key that replaces the command ⌘ key

source: https://w3c.github.io/uievents/#keyboardevent

Here is a fully functional example:

from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains  browser = webdriver.Safari(executable_path = '/usr/bin/safaridriver') browser.get("http://www.python.org") elem = browser.find_element_by_name("q") elem.clear() actions = ActionChains(browser) actions.move_to_element(elem) actions.click(elem) #select the element where to paste text actions.key_down(Keys.META) actions.send_keys('v') actions.key_up(Keys.META) actions.perform()  

So in Selenium (Ruby), this would be roughly something like this to select the text in an element, and then copy it to the clipboard.

# 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) 
like image 196
Brad Parks Avatar answered Sep 22 '22 18:09

Brad Parks