selenium提供了完整的模拟键盘操作事件,在模拟键盘操作需要先导入键盘模块
    from selenium.webdriver.common.keys import Keys

    1. import time
    2. from selenium.webdriver.support.wait import WebDriverWait
    3. from selenium.webdriver.support import expected_conditions as EC
    4. from selenium.webdriver.common.by import By
    5. from selenium.webdriver.common.keys import Keys
    6. driver = webdriver.Chrome()
    7. try:
    8. driver.get(url='https://www.baidu.com/')
    9. driver.implicitly_wait(10)
    10. locator = (By.XPATH,"//*[@id='kw']")
    11. ele = WebDriverWait(driver,20,0.5).until(EC.presence_of_element_located(locator))
    12. ele.send_keys("Python is good") # 向输入框输入“Python is good"字符
    13. time.sleep(1)
    14. ele.send_keys(Keys.BACK_SPACE) # 在输入框中模拟敲击键盘BACK_SPACE键
    15. time.sleep(1)
    16. ele.send_keys(Keys.SPACE) # 在输入框中模拟敲击键盘SPACE键
    17. ele.send_keys("d")
    18. time.sleep(1)
    19. ele.send_keys(Keys.CONTROL,'a') # 把输入框中的内容全选 ctrl+A
    20. time.sleep(1)
    21. ele.send_keys(Keys.CONTROL,'c') # 复制输入框中的内容 ctrl+C
    22. time.sleep(1)
    23. ele.clear() # 清空输入框
    24. time.sleep(1)
    25. ele.send_keys(Keys.CONTROL,'v') # 在输入框中粘贴内容 ctrl+V
    26. print(ele)
    27. except Exception as e:
    28. raise e
    29. finally:
    30. time.sleep(3)
    31. driver.quit()

    以下为常用的键盘操作:

    1. send_keys(Keys.BACK_SPACE) 删除键(BackSpace
    2. send_keys(Keys.SPACE) 空格键(Space)
    3. send_keys(Keys.TAB) 制表键(Tab)
    4. send_keys(Keys.ESCAPE) 回退键(Esc
    5. send_keys(Keys.ENTER) 回车键(Enter
    6. send_keys(Keys.CONTROL,'a') 全选(Ctrl+A
    7. send_keys(Keys.CONTROL,'c') 复制(Ctrl+C
    8. send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X
    9. send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V
    10. send_keys(Keys.LEFT) 方向键左(Left
    11. send_keys(Keys.UP) 方向键上(Up
    12. send_keys(Keys.RIGHT) 方向键右(Right
    13. send_keys(Keys.DOWN) 方向键下(Down

    模拟鼠标操作
    from selenium.webdriver.common.action_chains import ActionChains
    调用ActionChains的方法时不会立即执行,会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行,支持链式写法或者分步写法;

    1. from selenium import webdriver
    2. import time
    3. from selenium.webdriver.support.wait import WebDriverWait
    4. from selenium.webdriver.support import expected_conditions as EC
    5. from selenium.webdriver.common.by import By
    6. from selenium.webdriver.common.action_chains import ActionChains
    7. from selenium.webdriver.common.keys import Keys
    8. driver = webdriver.Chrome()
    9. try:
    10. driver.get(url='https://www.baidu.com/')
    11. driver.implicitly_wait(10)
    12. locator = (By.CSS_SELECTOR,"#s-top-left > div > a")
    13. ele = WebDriverWait(driver,20,0.5).until(EC.presence_of_element_located(locator))
    14. ActionChains(driver).move_to_element(ele).click().perform() # 移动鼠标到ele元素对象然后进行点击
    15. time.sleep(3)
    16. print(ele)
    17. except Exception as e:
    18. raise e
    19. finally:
    20. time.sleep(3)
    21. driver.quit()
    1. perform() 执行链中的所有动作
    2. click(on_element) 单击鼠标左键
    3. context_click(on_element) 点击鼠标右键
    4. double_click(on_element) 双击鼠标左键
    5. move_to_element(to_element) 鼠标移动到某个元素
    6. ele.send_keys(keys_to_send) 发送某个词到当前焦点的元素
    7. click_and_hold(on_element) 点击鼠标左键,不松开
    8. release(on_element) 在某个元素位置松开鼠标左键
    9. key_down(value, element) 按下某个键盘上的键
    10. key_up(value, elemen) 松开某个键
    11. drag_and_drop(source, target) 拖拽到某个元素然后松开
    12. drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开
    13. move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标
    14. move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少
    15. 距离的位置
    16. send_keys_to_element(element, keys_to_send) 发送某个键到指定元素

    模拟拖动:http://sahitest.com/demo/dragDropMooTools.htm