web自动化测试:模拟鼠标操作之悬浮,并点击悬浮后出现的元素

本文详细介绍了如何使用Selenium执行鼠标悬浮操作,并正确等待元素变为可点击状态,避免了因未调用element_to_be_clickable导致的定位错误。通过实例代码展示了如何在淘宝首页悬浮导航菜单并点击子菜单项,强调了等待时间和定位方法的选择,如By.CSS_SELECTOR等。同时,提醒读者注意不同定位方式的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于鼠标悬浮这个知识点,我查找了很多资料,发现网上的都是抄袭大法,基本内容例子都是一模一样w(゚Д゚)w

首先纠正他们的一个错误:没有调用 element_to_be_clickable 这个方法,直接click悬浮之后出现的元素。这样是操作不了的,我因此浪费了一天时间,还以为是自己定位错误~。
如图,会出现 Unable to locate element 的错误:
在这里插入图片描述
下面是操作成功的代码:

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

# 1.访问地址
driver = webdriver.Chrome()
driver.get("https://www.taobao.com/")
driver.maximize_window()
sleep(3)

# 2.获取悬浮地址的位置
# address = driver.find_element_by_css_selector("li[id='J_SiteNavSitemap']>div[class='site-nav-menu-hd']")  # 和下一行的作用一样,都是获取需要悬浮位置的元素
address = driver.find_element_by_css_selector("#J_SiteNavSitemap>.site-nav-menu-hd")

# 3.执行悬浮操作
ActionChains(driver).move_to_element(address).perform()

# 4.等待一段时间,待悬浮之后出现需要点击的元素时,找到该元素的位置并点击
down_data_click = WebDriverWait(driver, 5).until(expected_conditions.element_to_be_clickable((By.CSS_SELECTOR,
                "#J_SiteMapBd>div:nth-child(3)>.site-nav-sitemap-mod-wrap"
                ">.site-nav-sitemap-mod-bd>ul>li:nth-child(1) a")))
sleep(3)
down_data_click.click()

在这里插入图片描述

注意:
①第4点中的数字5,代表的是等待5秒,若5秒后,悬浮后未出现需要点击的元素或者没有加载出来报错之类,会抛出超时异常 TimeoutException;
②element_to_be_clickable 判断元素是否可点击;
③依然是第4点,其中的 By.CSS_SELECTOR 不是固定写法,看你之后的位置是用什么定位。【这里是使用的css选择器来定位,所以用By.CSS_SELECTOR】
如果后面的位置路径用的name属性定位,则用 By.NAME;
如果后面的位置路径用的XPATH属性定位,则用 By.XPATH;
如果后面的位置路径用的ID属性定位,则用 By.ID;
如果后面的位置路径用的标签名称定位,则用TAG_NAME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值