1、鼠标操作
关于鼠标的操作封装在ActionChains()类里,所以需要提前导入ActionChains()类;perform() 执行所有 ActionChains 中存储的行为(接在ActionChains类之后)
导入ActionChains 类:from selenium.webdriver import ActionChains
格式:ActionChains(浏览器).[行为(需要操作的元素)].perform()
1.1、鼠标右击与双击操作(单击即click())
右击操作:ActionChains(浏览器).context_click(需要右击的定位好的元素).perform()
双击:ActionChains(浏览器).double_click(需要右击的定位好的元素).perform()
代码实例:
from selenium import webdriver from selenium.webdriver import ActionChains import time # 创建一个浏览器对象 driver = webdriver.Firefox() # 设置浏览器最大化 driver.maximize_window() # 右击操作: # 访问百度 url = 'http://www.baidu.com' driver.get(url) # 定位元素loge元素 d = driver.find_element_by_css_selector('#s_lg_img') # 对元素进行鼠标右击操作 ''' ActionChains(driver):使用动作链类对浏览器进行操作 context_click(d):使用动作链类对定位好的d元素进行右击 perform():执行动作链类的操作''' ActionChains(driver).context_click(d).perform() time.sleep(2) # 双击操作: # 定位元素 ee = driver.find_element_by_link_text('新闻') # 双击元素 ActionChains(driver).double_click(ee).perform() time.sleep(2) # 关闭浏览器 driver.quit()
1.2、鼠标悬停操作
悬停:ActionChains(driver).move_to_element(元素).perform()
# 导入相关的模块 from selenium import webdriver from selenium.webdriver import ActionChains import time # 创建浏览器对象、设为最大化屏幕 driver = webdriver.Firefox() driver.maximize_window() # 访问京东 url = 'https://www.jd.com/' driver.get(url) # 定位需要鼠标悬停单个元素 xuan = driver.find_element_by_css_selector('li.cate_menu_item:nth-child(1) > a:nth-child(1)') # 悬停操作 ActionChains(driver).move_to_element(xuan).perform() time.sleep(3) # 获取一组悬停的元素,并且一个个遍历 xuans_list = driver.find_elements_by_css_selector('li.cate_menu_item') # 遍历悬停操作 for el in xuans_list: ActionChains(driver).move_to_element(el).perform() time.sleep(2) # 关闭浏览器 driver.quit()
2、键盘操作(按键名称需要大写、组合键里的参数需要小写)
Keys()类提供了键盘上几乎所有按键的方法,原理与鼠标相似;使用键盘操作前需先导入Keys()类,然后配合send_keys()使用
导入Keys()类:from selenium.webdriver.common.keys import Keys
格式:元素.send_keys(Keys.键盘名称) 或组合键方式:元素.send_keys(Keys.CONTROL,'x')
# 导入需要的模块 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 创建浏览器对象设置为最大化 driver = webdriver.Firefox() driver.maximize_window() # 访问百度 driver.get('http:www.baidu.com') # 定位输入框 srk = driver.find_element_by_id('kw') # 输入框输入内容 srk.send_keys('周润发') time.sleep(1) # 全选输入框内容 srk.send_keys(Keys.CONTROL,'a') time.sleep(1) # 剪切输入框内容 srk.send_keys(Keys.CONTROL,'x') time.sleep(1) # 粘贴已经剪切的内容 srk.send_keys(Keys.CONTROL,'v') time.sleep(1) # 全选删除内容 srk.send_keys(Keys.CONTROL,'a') time.sleep(1) srk.send_keys(Keys.BACK_SPACE) time.sleep(1) # 重新输入内容 srk.send_keys('刘德华') time.sleep(1) # 全选复制输入框内容 srk.send_keys(Keys.CONTROL,'a') time.sleep(1) srk.send_keys(Keys.CONTROL,'c') time.sleep(1) srk.send_keys(Keys.CONTROL,'v') time.sleep(1) # 使用enter键代替点击搜索动作 srk.send_keys(Keys.ENTER) 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.NUMPAD3) 输入键盘数字3(数字及文中 输入一般直接打字即可,此方法较少用)
- 。。。。。。。。。。。。。
各个按键输入都是同一套路,照搬即可