selenium提供了完整的模拟键盘操作事件,在模拟键盘操作需要先导入键盘模块
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
try:
driver.get(url='https://www.baidu.com/')
driver.implicitly_wait(10)
locator = (By.XPATH,"//*[@id='kw']")
ele = WebDriverWait(driver,20,0.5).until(EC.presence_of_element_located(locator))
ele.send_keys("Python is good") # 向输入框输入“Python is good"字符
time.sleep(1)
ele.send_keys(Keys.BACK_SPACE) # 在输入框中模拟敲击键盘BACK_SPACE键
time.sleep(1)
ele.send_keys(Keys.SPACE) # 在输入框中模拟敲击键盘SPACE键
ele.send_keys("d")
time.sleep(1)
ele.send_keys(Keys.CONTROL,'a') # 把输入框中的内容全选 ctrl+A
time.sleep(1)
ele.send_keys(Keys.CONTROL,'c') # 复制输入框中的内容 ctrl+C
time.sleep(1)
ele.clear() # 清空输入框
time.sleep(1)
ele.send_keys(Keys.CONTROL,'v') # 在输入框中粘贴内容 ctrl+V
print(ele)
except Exception as e:
raise e
finally:
time.sleep(3)
driver.quit()
以下为常用的键盘操作:
send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
send_keys(Keys.LEFT) 方向键左(Left)
send_keys(Keys.UP) 方向键上(Up)
send_keys(Keys.RIGHT) 方向键右(Right)
send_keys(Keys.DOWN) 方向键下(Down)
模拟鼠标操作
from selenium.webdriver.common.action_chains import ActionChains
调用ActionChains的方法时不会立即执行,会将所有的操作按顺序存放在一个队列里,当调用perform()方法时,队列中的事件会依次执行,支持链式写法或者分步写法;
from selenium import webdriver
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
try:
driver.get(url='https://www.baidu.com/')
driver.implicitly_wait(10)
locator = (By.CSS_SELECTOR,"#s-top-left > div > a")
ele = WebDriverWait(driver,20,0.5).until(EC.presence_of_element_located(locator))
ActionChains(driver).move_to_element(ele).click().perform() # 移动鼠标到ele元素对象然后进行点击
time.sleep(3)
print(ele)
except Exception as e:
raise e
finally:
time.sleep(3)
driver.quit()
perform() 执行链中的所有动作
click(on_element) 单击鼠标左键
context_click(on_element) 点击鼠标右键
double_click(on_element) 双击鼠标左键
move_to_element(to_element) 鼠标移动到某个元素
ele.send_keys(keys_to_send) 发送某个词到当前焦点的元素
click_and_hold(on_element) 点击鼠标左键,不松开
release(on_element) 在某个元素位置松开鼠标左键
key_down(value, element) 按下某个键盘上的键
key_up(value, elemen) 松开某个键
drag_and_drop(source, target) 拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) 拖拽到某个坐标然后松开
move_by_offset(xoffset, yoffset) 鼠标从当前位置移动到某个坐标
move_to_element_with_offset(to_element, xoffset, yoffset) 移动到距某个元素(左上角坐标)多少
距离的位置
send_keys_to_element(element, keys_to_send) 发送某个键到指定元素