UI自动化—鼠标悬停—求告知

按照教学自己编写的脚本,用京东做的调试,进去我的订单,在账户设置上弄鼠标悬停,一直没有展示预期效果,也没报错

img

class后面的值不用加双引号,直接[class=value]。比如:打开京东-》鼠标在在“我的订单”悬停-》鼠标在“购物车”悬停,可以这么写:

import time
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

# 1.创建WebDriver对象
# 如果将驱动添加到了系统环境变量目录中,可不带参数
# driver = webdriver.Chrome()
# 如果没有添加到系统环境变量目录中,需要通过参数指定
service = Service(r"D:\software\chromedriver.exe")
driver = webdriver.Chrome(service=service)
# 2.url请求地址
url = 'https://www.jd.com/'

# 3.发送请求
driver.get(url)
driver.maximize_window()
time.sleep(1)
el1 = driver.find_element(by=By.CSS_SELECTOR, value='[class=dt')
# 创建一个事件链对象
action = ActionChains(driver)
action.move_to_element(el1)
time.sleep(3)
el2 = driver.find_element(by=By.CSS_SELECTOR, value='[class=cw-icon]')
time.sleep(3)
action.move_to_element(el2)

# 事件提交
action.perform()

# 4.睡眠3秒
sleep(3)
# 5.关闭驱动对象
driver.close()

试试这样呢:

action.clickAndHold(element_dz1)

可以参考这个
鼠标放置按钮上,出现悬浮菜单(个人信息,退出等),此时对应的元素方可被找到

    def auth_logout(self):  # auth登录后登出
        actions = ActionChains(self.driver)
        actions.move_to_element(
            self.driver.find_element(By.XPATH, "//*[@id=\"zOffice\"]/header/div/div[2]/div")).perform()  # 鼠标悬停
        WebDriverWait(self.driver, 10, 0.5).until(
            ec.presence_of_element_located((By.XPATH, "//li[contains(.,'退出登录')]")))  # 隐式等待 判断元素是否被加到了 dom 树里
        self.driver.find_element(By.XPATH, "//li[contains(.,'退出登录')]").click()
        time.sleep(0.5)