ActionChains类与输入事件
使用 click() 可以模拟鼠标的左键点击事件,现在的 web 页面中有很多其他的鼠标交互方式,比如鼠标右击,双击,悬停,鼠标拖放等功能。在 WebDriver 中,将这些关于鼠标操作的方法封装在 ActionChains 类
1、from selenium.webdriver.common.action_chains import ActionChains
2、ActionChains(driver):用于生成模拟用户行为
3、perform():执行存储行为
鼠标事件:
表达式 | 说明 |
context_click | 右击事件 |
double_click | 双击事件 |
drag_and_drop | 拖动(拖放) |
move_to_element() | 鼠标停在一个元素上(鼠标悬停) |
click_and_hold | 按下鼠标左键在一个元素上 |
举例:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.implicitly_wait(20) #等待20秒
mouse=driver.find_element_by_link_text("设置") #定位 设置 按钮
ActionChains(driver).move_to_element(mouse).perform() #鼠标悬停在 设置 按钮
driver.find_element_by_link_text("搜索设置").click() #点击设置按钮下的 搜索链接
driver.find_element_by_id("nr") #定位下拉框
driver.find_elements_by_tag_name('option')[1].click() #获取下拉框第二个选项
driver.find_element_by_xpath("//option[@value='50']").click() #获取下拉框值包含50的选项
driver.find_element_by_css_selector("[value='20']").click()
driver.find_element_by_css_selector("html body div#wrapper div.bdlayer.pfpanel div.pfpanel-bd div.pftab div.pftab_bd div#general.item.cur form div.search-setting table#gxsz tbody tr td#se-setting-3 select#nr option").click()
driver.find_element_by_css_selector("[value='20']").click() #获取下拉框值得几种写法
键盘事件:send_keys()
from selenium.webdriver.common.keys import Keys
Key 类提供了键盘上几乎所有的按键方法。通过send_key() 方法不仅可以用来模拟键盘输入,还可以用它来模拟键盘上的按键。包括组合键,比如 ctrl+a 等
表达式 | 说明 |
send_keys(Keys.BACK_SPACE) | 退格键 |
send_keys(Keys.CONTRL,'a') | 全选 |
send_keys(Keys.CONTRL,'V') | 粘贴 |
send_keys(Keys.CONTRL,'C') | 复制 |
send_keys(Keys.CONTRL,'X') | 剪切 |
send_keys(Keys.ENTER) | 回车 |
举例:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
d=webdriver.Firefox()
d.get("https://www.baidu.com")
mouse=d.find_element_by_link_text("设置")
ActionChains(d).move_to_element(mouse).perform() #鼠标悬浮在 设置上
d.find_element_by_link_text("搜索设置").click()
dd=d.find_element_by_class_name("prefpanelgo") #保存设置按钮
dd.send_keys(Keys.ENTER) #鼠标回车