selenium鼠标拖动

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

driver = webdriver.Chrome()
driver.get("https://www.12306.cn/index/")
driver.maximize_window()
driver.implicitly_wait(30)

# 显式等待可点击后,点击右上角的登录
WebDriverWait(driver, 10, 0.5).until(
    EC.element_to_be_clickable((By.XPATH, "//a[@id='J-btn-login']"))
).click()

# 显式等待可点击后,点击用户名框,输入用户名
WebDriverWait(driver, 10, 0.5).until(
    EC.element_to_be_clickable((By.XPATH, "//input[@id='J-userName']"))
).click()
driver.find_element(by=By.XPATH, value="//input[@id='J-userName']").send_keys("#个人账号#")

# 显式等待可点击后,点击密码框,输入密码
WebDriverWait(driver, 10, 0.5).until(
    EC.element_to_be_clickable((By.XPATH, "//input[@id='J-password']"))
).click()
driver.find_element(by=By.XPATH, value="//input[@id='J-password']").send_keys("#账号对应的密码#")

print(driver.window_handles)  # 用于检查点击登录(验证码弹框出来)前后窗口句柄情况

# 显式等待可点击后,点击登录
WebDriverWait(driver, 10, 0.5).until(
    EC.element_to_be_clickable((By.XPATH, "//a[text()='立即登录']"))
).click()

print(driver.window_handles)  # 用于检查点击登录(验证码弹框出来)前后窗口句柄情况

# ------------鼠标拖动操作(拖动验证码滑块为例)------------
# 定位滑块元素
sli_ele = driver.find_element(by=By.XPATH, value="//span[@class='nc_iconfont btn_slide']")

# 创建鼠标操作对象
action = ActionChains(driver)
# 第一步:在滑块处按住鼠标左键
action.click_and_hold(sli_ele)
# 第二步:相对鼠标当前位置进行移动
action.move_by_offset(300, 0)
# 第三步:释放鼠标
action.release()
# 执行动作
action.perform()

time.sleep(5)
driver.quit()

 

posted @ 2022-01-06 20:02  2orange  阅读(335)  评论(0编辑  收藏  举报