鼠标移动操作
1、selenium里有一个专门的类来处理鼠标的操作: ActionChains类, 可以用来模拟鼠标操作
from selenium.webdriver.common.action_chains import ActionChains 【导包】
"""
selenium里有一个专门的类来处理鼠标的操作: ActionChains类, 可以用来模拟鼠标操作
* from selenium.webdriver.common.action_chains import ActionChains 【导包】第一步:选择鼠标的行为(参数是元素对象-element): 通过driver.find_element找到的元素,再选择鼠标行为:
* 悬浮-移动鼠标 move_to_element() -- p1
* 点击 click() --p1
* 拖拽drag_and_drop(element1,element2) --P2* 先找到element1,再找到element2,拖拽执行
* 双击double_click() ---p2
* 在特定元素上单击鼠标左键(不释放)click_and_hold() ----- p2
* 暂停 pause() 每个动作之间可以暂停一下----- p2
* release() #抬起鼠标 --p2
* 右键 context_click() :右键后打开的菜单 无法定位 不属于html页面 所以用的少。-P3第二步:执行鼠标操作行为 - perform(),鼠标操作一定要perform才会执行。
ActionChains鼠标操作的具体的使用步骤:
* 1、实例化ActionChains对象
* 2、调用你要使用的鼠标操作行为 :* 可以用链式调用 - 因为每个方法返回的都是self ,可以连续调用
* 3、调用perform()去执行鼠标操作: 一定要perform才会执行。使用场景: 当你使用了selenium普通的点击无法生效的时候 尝试用鼠标点击。【依然不行的话 可以尝试js点击】"""
import timefrom selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdef wait_element_visible(element_visible):driver_visible = WebDriverWait(driver, 8, 0.8).until(EC.visibility_of_element_located(element_visible))return driver_visibledef wait_element_clickable(element_clickable):driver_clickable = WebDriverWait(driver, 8, 0.8).until(EC.element_to_be_clickable(element_clickable))return driver_clickabledriver = webdriver.Chrome()
driver.maximize_window()
# D:\Project\python_ui01\upload_demo.html
driver.get('file:///D:/Project/python_ui01/upload_demo.html')
# 先找到下拉框的元素
name_id = (By.ID,'fu')
ele = wait_element_clickable(name_id)
#鼠标类实例化 ----perform()
ActionChains(driver).click(ele).perform()
time.sleep(3)
driver.quit()
鼠标移动
"""
selenium里有一个专门的类来处理鼠标的操作: ActionChains类, 可以用来模拟鼠标操作
* from selenium.webdriver.common.action_chains import ActionChains 【导包】第一步:选择鼠标的行为(参数是元素对象-element): 通过driver.find_element找到的元素,再选择鼠标行为:
* 悬浮-移动鼠标 move_to_element() -- p1
* 点击 click() --p1
* 拖拽drag_and_drop(element1,element2) --P2* 先找到element1,再找到element2,拖拽执行
* 双击double_click() ---p2
* 在特定元素上单击鼠标左键(不释放)click_and_hold() ----- p2
* 暂停 pause() 每个动作之间可以暂停一下----- p2
* release() #抬起鼠标 --p2
* 右键 context_click() :右键后打开的菜单 无法定位 不属于html页面 所以用的少。-P3第二步:执行鼠标操作行为 - perform(),鼠标操作一定要perform才会执行。
ActionChains鼠标操作的具体的使用步骤:
* 1、实例化ActionChains对象
* 2、调用你要使用的鼠标操作行为 :* 可以用链式调用 - 因为每个方法返回的都是self ,可以连续调用
* 3、调用perform()去执行鼠标操作: 一定要perform才会执行。使用场景: 当你使用了selenium普通的点击无法生效的时候 尝试用鼠标点击。【依然不行的话 可以尝试js点击】"""
import timefrom selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECdef wait_element_visible(element_visible):driver_visible = WebDriverWait(driver, 8, 0.8).until(EC.visibility_of_element_located(element_visible))return driver_visibledef wait_element_clickable(element_clickable):driver_clickable = WebDriverWait(driver, 8, 0.8).until(EC.element_to_be_clickable(element_clickable))return driver_clickabledriver = webdriver.Chrome()
driver.maximize_window()
# D:\Project\python_ui01\upload_demo.html
driver.get('https://www.baidu.com/')
# 先找到下拉框的元素
name_id = (By.XPATH,'//span[@id="s-usersetting-top"]')
ele = wait_element_clickable(name_id)
#鼠标类实例化 ----perform()
ActionChains(driver).move_to_element(ele).perform()
time.sleep(3)
driver.quit()
2、普通的点击操作和鼠标点击操作的区别?
selenium普通的click,在点击的时候是有条件要求,被点击的元素需要是能够被点击的状态 – 有条件约束,有可能会失败
鼠标click,不会管元素是否能够被点击,直接去点击 – 没有条件约束,任何元素都可以点击 – 成功率更高
什么情况下使用鼠标click?== 如果你发现有时候通过普通的click点击不了,那你可以选择鼠标click 【后面还会讲js点击】