Selenium2+Python自动化:利用JS解决click失效问题

文章目录

前言

在使用Selenium2和Python进行自动化测试时,我们有时会遇到这样的情况:元素明明已经被成功定位,代码运行也没有报错,但点击元素后,页面却没有任何反应。由于没有报错信息,仅仅是 click 事件失效,这种问题处理起来着实令人头疼。

本篇文章将介绍两种方法,帮助你解决这种诡异的点击事件失效问题。

一、遇到的问题

在练习操作百度的搜索设置按钮时,点击保存设置按钮后,预期弹出的 alert 框并未出现(代码运行没有报错,但获取 alert 框失败)。相信不少人都遇到过类似的情况。

二、点击父元素

问题分析

出现这种点击失效的问题,很可能是前面操作 select 元素后产生的后遗症。经过测试,当注释掉 select 相关代码后,点击操作能够成功执行。

解决办法

第一种解决办法是,先点击目标元素的父元素一次,然后再点击目标元素。

实现思路

通过先触发父元素的点击事件,可能会解决因之前操作导致的页面状态异常,从而使后续对目标元素的点击操作能够正常执行。

三、使用JS直接点击

当遇到上述诡异问题时,我们可以使用JS大法来解决。通过JS直接执行点击事件,绕过可能存在的页面交互异常。

四、参考代码

python 复制代码
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time

# 初始化浏览器驱动
driver = webdriver.Firefox()
# 打开百度页面
url = "https://www.baidu.com"
driver.get(url)
# 等待页面加载
time.sleep(3)

# 定位设置按钮并悬停
mouse = driver.find_element("link text", "设置")
ActionChains(driver).move_to_element(mouse).perform()
# 等待悬停效果生效
time.sleep(3)

# 点击搜索设置
driver.find_element("link text", "搜索设置").click()
# 等待页面跳转
time.sleep(3)

# 选择每页显示50条
s = driver.find_element("id", "nr")
Select(s).select_by_visible_text("每页显示50条")

# 方法一:先点父元素 
# driver.find_element("id", "gxszButton").click()
# driver.find_element("class name", "prefpanelgo").click()

# 方法二:用js直接去点击 
js = 'document.getElementsByClassName("prefpanelgo")[0].click();'
driver.execute_script(js)
相关推荐
高级程序源6 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe6 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
kimnoic6 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
snhna6 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
必须得开心呀7 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
Wx-bishekaifayuan7 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂8 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师8 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
Wx-bishekaifayuan8 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe8 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计