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().
? ? ? ?涉及到鼠标自动化操作的时候,千万不要碰鼠标
????????????????
|