web自动化之鼠标悬停事件

前言:我们在操作浏览器的时候,都需要一些鼠标悬停才能显示的下拉框或者选择下拉框的内容。

鼠标操作类是 ActionChains
鼠标事件有:
 1. 悬浮 - 用的最多最多 move_to_element
 2. 右键 context_click
 3. 点击 click
 4. 双击 double_click
 5. 拖拽 drag_and_drop
 6. 滚动 — js
 7. 按住左键不松 click_and_hold
 8. 释放 release

执行的命令:
 1. 重置 reset_actions
 2. 执行操作 perform() # 一定要带

我们选百度首页的下拉框来做操作。如下:
web自动化之鼠标悬停事件_第1张图片
只有鼠标悬浮才能现在下拉列表
代码实现:

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

#找到设置
ele = driver.find_element_by_xpath('//*[@id="u1"]//a[@name="tj_settingicon"]')
#鼠标悬停
ActionChains(driver).move_to_element(ele).perform()
#点击“高级搜索”
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[text()="高级搜索"]')))
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()

那根据高级搜索 里的下拉框我们怎么处理? 使用 Select方法就可以搞定
web自动化之鼠标悬停事件_第2张图片

具体代码如下:

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


driver = webdriver.Chrome()
driver.get("http://www.baidu.com")


#找到设置
ele = driver.find_element_by_xpath('//*[@id="u1"]//a[@name="tj_settingicon"]')
#鼠标悬停
ActionChains(driver).move_to_element(ele).perform()
#点击“高级搜索”
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[text()="高级搜索"]')))
driver.find_element_by_xpath('//a[text()="高级搜索"]').click()
# 1、找到select元素对象,实例化Select类。
WebDriverWait(driver,30).until(EC.visibility_of_element_located((By.XPATH,'//select[@name="ft"]')))
s = Select(driver.find_element_by_xpath('//select[@name="ft"]'))
#2、选择下拉框的值,下拉框的值可以通过value,index,text三种方法选择option对应的值,以下三种方法任选其一,或者都可以写进代码里,互不影响
time.sleep(2)
#2.1 通过value值来定位
s.select_by_value("ppt")
time.sleep(2)
#2.2通过下标来定位
s.select_by_index(1)  # 从0开始
time.sleep(2)
#通过text文本来定位
s.select_by_visible_text("所有格式")

:在鼠标悬停的时候,请不要触碰鼠标,以免发生错误

你可能感兴趣的:(python,selenium)