当前位置: 首页 > news >正文

使用 Selenium Python 检查元素是否存在

像 Selenium 这样的自动化工具使我们能够通过不同的语言和浏览器自动化 Web 流程并测试应用程序。 Python 是它支持的众多语言之一,并且是一种非常简单的语言。

它的Python客户端帮助我们通过Selenium工具与浏览器连接。 Web 测试对于开发 Web 应用程序至关重要,但更重要的是,它使我们能够自动化 Web 流程。

我们需要访问源代码并检查某些元素以自动化此类过程。

本文向您展示如何使用其 Python 客户端和 API 检查某个元素是否存在于 Selenium 中。


使用 find_element() 使用 Selenium Python 检查元素是否存在

要使用 Selenium Python 客户端,我们需要通过以下 pip 命令安装其包:

pip install selenium

除了Python客户端之外,如果我们要使用它们,还需要安装其他工具,例如ChromeDriver。 您可以相当轻松地下载并安装它。

现在,我们可以使用 Selenium 模块及其 Exception 部分来检查元素是否存在。 首先,我们使用 webdriver 模块访问浏览器代理(Chrome)并使用 get() 方法访问我们想要检查其元素的网页。

然后,使用 find_element() 方法,并传递 By.TAG_NAME 参数和要查找的元素(例如 h2)。 find_element() 方法使用 By 策略和定位器来查找元素。

在下面的代码中,我们使用By.TAG_NAME策略来查找我们想要的元素。 我们还可以使用 By.CSS_SELECTOR 来查找元素。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementExceptiondriver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://thehackernews.com/")try:element = driver.find_element(By.TAG_NAME, 'h2')hackHead = element.textprint("Element exist")print(hackHead)
except NoSuchElementException:print("Element does not exist")driver.close()

输出:

DeprecationWarning: executable_path has been deprecated, please pass in a Service objectdriver = webdriver.Chrome(executable_path="C:\chromedriver.exe")DevTools listening on ws://127.0.0.1:57551/devtools/browser/dce0d9db-6c42-402e-8770-13999aff0e79
Element exist
Pay What You Want for This Collection of White Hat Hacking Courses

我们获得了 Pay What You Want for This Collection of White Hat Hacking Courses 作为元素的内容,但您可能会注意到可执行文件路径周围有一个 DeprecationWarning。

DeprecationWarning: executable_path has been deprecated, please pass in a Service objectdriver = webdriver.Chrome(executable_path="C:\chromedriver.exe")

为了解决这个问题,我们需要安装 webdriver-manager 模块来使用 pip 命令处理浏览器交互。

pip install webdriver-manager

然后,使用以下语句将模块导入到您的代码中。

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

并使用service属性而不是executable_path,并将 Service()ChromeDriverManager() 方法传递给service属性。

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

现在,代码变成:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Servicedriver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.implicitly_wait(0.5)
driver.get("https://thehackernews.com/")try:l= driver.find_element(By.TAG_NAME, 'h2')s= l.textprint("Element exist -" + s)
except NoSuchElementException:print("Element does not exist")driver.close()

输出:

[WDM] - Downloading: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 6.29M/6.29M [00:03<00:00, 2.13MB/s]DevTools listening on ws://127.0.0.1:57442/devtools/browser/2856cae0-e665-42c3-a20d-a847d52658c1
Element exist
Pay What You Want for This Collection of White Hat Hacking Courses

因为这是第一次运行,您可能会看到输出的 [WDM] 部分; 否则,只有 DevTools 消息和代码输出应该是可见的。 这样,您可以使用其 Python 客户端轻松检查 Selenium 中是否存在某个元素。

相关文章:

使用 Selenium Python 检查元素是否存在

像 Selenium 这样的自动化工具使我们能够通过不同的语言和浏览器自动化 Web 流程并测试应用程序。 Python 是它支持的众多语言之一&#xff0c;并且是一种非常简单的语言。 它的Python客户端帮助我们通过Selenium工具与浏览器连接。 Web 测试对于开发 Web 应用程序至关重要&am…...

const迭代器与模板构造函数

在自己实现C中list的时候&#xff0c;当实现const迭代器的时候&#xff0c;发现报错了&#xff0c;一直思考到现在 才发现是一个&#xff0c;很简单的问题&#xff0c;但是也让我有了一点感受&#xff0c;我在这里给大家分享一下。文章目录 1.当时遇到的问题2.解决方法3. 自己的…...

在Qt中解决opencv的putText函数无法绘制中文的一种解决方法

文章目录 1.问题2.查阅资料3.解决办法 1.问题 在opencv中&#xff0c;假如直接使用putText绘制中文&#xff0c;会在图像上出现问号&#xff0c;如下图所示&#xff1a; 2.查阅资料 查了一些资料&#xff0c;说想要解决这个问题&#xff0c;需要用到freetype库或者用opencv…...

【Linux】第六站:Centos系统如何安装软件?

文章目录 1.Linux安装软件的方式2.Linux的软件生态3. yum4. rzsz软件的安装与卸载5.yum如何知道去哪里下载软件&#xff1f; 1.Linux安装软件的方式 在linux中安装软件常用的有三种方式 源代码安装&#xff08;我们还需要进行编译运行后才可以&#xff0c;很麻烦&#xff09; …...

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…...

【Midjourney入门教程4】与AI对话,写好prompt的必会方法

文章目录 1、语法2、单词3、要学习prompt 框架4、善用参数&#xff08;注意版本&#xff09;5、善用模版6、临摹7、垫图 木匠不会因为电动工具的出现而被淘汰&#xff0c;反而善用工具的木匠&#xff0c;收入更高了。 想要驾驭好Midjourney&#xff0c;可以从以下方面出发调整&…...

基于单片机的智能灭火小车设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、整体设计方案1.1 整体设计任务1.2 整体设计要求1.3 系统整体方案设计1.3.1 整体模块设计1.3.2 整体设计方案选择…...

[Machine Learning][Part 7]神经网络的基本组成结构

这里我们将探索神经元/单元和层的内部工作原理。特别是,与之前学习的回归/线性模型和逻辑模型进行比较。最后接介绍tensorflow以及如何利用tensorflow来实现这些模型。 神经网络和大脑的神经元工作原理类似&#xff0c;但是比大脑的工作原理要简单的多。大脑中神经元的工作原理…...

精准测试:提高软件质量和用户满意度的利器

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…...

代碼隨想錄算法訓練營|第五十八天|583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇。刷题心得(c++)

目录 讀題 583. 两个字符串的删除操作 自己看到题目的第一想法 看完代码随想录之后的想法 72. 编辑距离 看完代码随想录之后的想法 583. 两个字符串的删除操作 - 實作 思路 代碼隨想錄思路 Code 72. 编辑距离 - 實作 思路 Code 编辑距离总结篇 判斷子序列 不同…...

JavaScript基础之BOM与DOM

文章目录 BOM操作window对象window的子对象之navigator对象&#xff08;了解即可&#xff09;window的子对象之screen对象&#xff08;了解即可&#xff09;window的子对象之history对象&#xff08;了解即可&#xff09;window的子对象之location对象 弹出框警告框确认框提示框…...

【Linux学习笔记】进程概念(中)

1. 操作系统的进程状态2. Linux操作系统的进程状态3. 僵尸进程4. 孤儿进程5. 进程优先级5.1. 优先级是什么和为什么要有优先级5.2. Linux中的进程优先级 6. 进程切换7. 环境变量7.1. 环境变量的认识7.2. 环境变量相关的命令7.3. 环境变量和本地变量7.4. 命令行参数7.5. 获取环境…...

scanpy赋值问题

今天发现一个很奇怪的bug import numpy as np import pandas as pd import anndata as ad from scipy.sparse import csr_matrix print(ad.__version__)counts csr_matrix(np.random.poisson(1, size(100, 2000)), dtypenp.float32) adata1 ad.AnnData(counts) print(adata1)…...

腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板

一、购买域名并且进行备案和解析&#xff0c;正常情况下&#xff0c;购买完域名&#xff0c;如果找不到去哪备案&#xff0c;可以在腾讯云上搜索“备案”关键词就会出现了&#xff0c;所以这里不做详细介绍&#xff0c;直接进行步骤提示&#xff1a; 二、申请ssl证书&#xff0…...

odoo 按钮打印pdf报表

odoo打印一般是在动作里面进行的 所以此方法可用自定义按钮进行打印 <template id"report_sale_line_packing_template"> xxx </template><template id"report_sale_line_packing"><t t-call"web.basic_layout"><t …...

用逻辑分析仪观察串口Uart数据波形

一、概述 只讨论嵌入式编程中较为常用的异步串行接口&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c; UART&#xff09;&#xff0c;TTL电平。 串口的参数一般有&#xff1a; 1.波特率&#xff0c;数据传输速率&#xff0c;单位bps&#xff08;bits per…...

数据结构-栈应用括号匹配

1、顺序栈的定义 2、顺序栈的入栈&#xff0c;出栈&#xff0c;取出栈顶元素&#xff0c;匹配判断函数 3、顺序栈的运行测试 4、实现代码 #include<iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; #define M…...

leetcode做题笔记209. 长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&#…...

【机器学习】几种常用的机器学习调参方法

在机器学习中&#xff0c;模型的性能往往受到模型的超参数、数据的质量、特征选择等因素影响。其中&#xff0c;模型的超参数调整是模型优化中最重要的环节之一。超参数&#xff08;Hyperparameters&#xff09;在机器学习算法中需要人为设定&#xff0c;它们不能直接从训练数据…...

使用免费 FlaskAPI 部署 YOLOv8

目标检测和实例分割是计算机视觉中关键的任务&#xff0c;使计算机能够在图像和视频中识别和定位物体。YOLOv8是一种先进的、实时的目标检测系统&#xff0c;因其速度和准确性而备受欢迎。 Flask是一个轻量级的Python Web框架&#xff0c;简化了Web应用程序的开发。通过结合Fla…...

3步告别GitHub英文界面:GitHub中文化插件终极解决方案

3步告别GitHub英文界面&#xff1a;GitHub中文化插件终极解决方案 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub的英文…...

从CDP“3A”到千亿美元目标:联想集团的创新路径与AI原生转型

在全球产业链加速重构、人工智能技术范式快速迭代的背景下&#xff0c;中国企业的创新能力正成为各界关注的焦点。当被问及“哪些中国企业创新做得不错”时&#xff0c;有一家科技企业凭借其在绿色低碳、供应链协同以及混合式人工智能领域的系统性突破&#xff0c;给出了具有说…...

WTEW的操作记录

WTEW的操作记录WTEW事务代码的操作记录WTEW事务代码的操作记录 1、查询贸易合同信息 如果是自己创建可以使用WB21、WB22、WB23事务码&#xff0c;如果是税码更新用WBRP更新价格 2、创建后续单据&#xff0c;采购TC创建采购订单&#xff0c;销售TC创建销售订单&#xff0c;注…...

《数据挖掘(主编:吕欣 王梦宁)》读书笔记:异常检测方法梳理与实践理解

《数据挖掘&#xff08;主编&#xff1a;吕欣 王梦宁&#xff09;》读书笔记&#xff1a;异常检测方法梳理与实践理解本文是学习《数据挖掘&#xff08;主编&#xff1a;吕欣 王梦宁&#xff09;》中“异常检测”相关内容后的整理笔记。文章不追求逐条复述教材&#xff0c;而是…...

FinalBurn Neo:一场跨越时空的街机游戏考古之旅

FinalBurn Neo&#xff1a;一场跨越时空的街机游戏考古之旅 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo 在数字时代的洪流中&#xff0c;有一群守护者正在用代码为经典街机游戏搭建永生的方舟。Fina…...

CANN/asc-devkit MakeNDLayout函数

MakeNDLayout 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.c…...

6. 网络优化方法之 学习率 优化/衰减策略

1. 学习率优化如图&#xff1a;学习率0.01时收敛速度很慢&#xff0c;学习率0.1时收敛速度变快&#xff0c;学习率越大 收敛速度越快&#xff1b; 学习率0.2 即学习率较大是会 来回震荡&#xff0c;学习率0.3 即学习率过大时会发生 梯度爆炸&#xff08;即远远超出所在范围&…...

蘑菇博客性能优化技巧:10个提升博客访问速度的方法 [特殊字符]

蘑菇博客性能优化技巧&#xff1a;10个提升博客访问速度的方法 &#x1f680; 【免费下载链接】mogu_blog_v2 蘑菇博客(MoguBlog)&#xff0c;一个基于微服务架构的前后端分离博客系统。Web端使用Vue Element , 移动端使用uniapp和ColorUI。后端使用Spring cloud Spring boot…...

Amphenol ICC线束MSPEC6P2A5010应用与替代分析

随着工业通信、车载网络以及高速数据互联的发展&#xff0c;越来越多设备开始采用高性能线束组件来保证数据稳定传输。在工业自动化与智能设备领域&#xff0c;Amphenol ICC推出的MSPE系列近年来关注度持续提升&#xff0c;其中MSPEC6P2A5010就是比较典型的一款工业级线束组件。…...

深入拆解 MySQL InnoDB 隔离级别:从 MVCC 到临键锁

前言 关于 MySQL InnoDB 的事务隔离级别&#xff0c;90% 的开发者都存在至少一个致命误区&#xff1a; 误区1&#xff1a;RR&#xff08;可重复读&#xff09; 临键锁 彻底解决了幻读误区2&#xff1a;Serializable 只是比 RR 加的锁更多&#xff0c;本质还是用 MVCC误区3&a…...