actionChains常用操作:
move_to_element 移动到某个元素-悬停
click 点击
double_click 双击
context_click 右键
drag_and_drop 拖拽
以百度为例:
1.将鼠标悬停至更多按钮
ele_more = driver.find_element(By.XPATH, '//a[@name="tj_briicon"]')
#ActionChains(driver).move_to_element(ele_more).perform()
为方便操作,将actionsChains初始化单独列出来,红色和黑色二选一均可
ac = ActionChains(driver)
ac.move_to_element(ele_more).perform()
2.点击更多中的翻译,上述基础上继续。
ele_fanyi = driver.find_element(By.XPATH, '//a[@name="tj_fanyi"]')
ac.click(ele_fanyi).perform()
3.点击X关闭弹出框
wins = driver.window_handles
driver.switch_to.window(wins[-1])
time.sleep(1)
loc = (By.XPATH, '//a[@class="desktop-guide-close"]')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
4.上完整代码
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
ele_more = driver.find_element(By.XPATH, '//a[@name="tj_briicon"]')
ac = ActionChains(driver)
ac.move_to_element(ele_more).perform()
ele_fanyi = driver.find_element(By.XPATH, '//a[@name="tj_fanyi"]')
ac.click(ele_fanyi).perform()
wins = driver.window_handles
driver.switch_to.window(wins[-1])
time.sleep(1)
loc = (By.XPATH, '//a[@class="desktop-guide-close"]')
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(loc))
driver.find_element(*loc).click()
注:千万记得perform().
涉及到鼠标自动化操作的时候,千万不要碰鼠标