Performing a copy and paste with Selenium 2

后端 未结 8 1882
广开言路
广开言路 2020-11-30 05:05

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

8条回答
  •  误落风尘
    2020-11-30 05:14

    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)
    

提交回复
热议问题