当前位置: 首页 > 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 中是否存在某个元素。

http://www.lryc.cn/news/215868.html

相关文章:

  • const迭代器与模板构造函数
  • 在Qt中解决opencv的putText函数无法绘制中文的一种解决方法
  • 【Linux】第六站:Centos系统如何安装软件?
  • Istio 实战
  • 【Midjourney入门教程4】与AI对话,写好prompt的必会方法
  • 基于单片机的智能灭火小车设计
  • [Machine Learning][Part 7]神经网络的基本组成结构
  • 精准测试:提高软件质量和用户满意度的利器
  • 代碼隨想錄算法訓練營|第五十八天|583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇。刷题心得(c++)
  • JavaScript基础之BOM与DOM
  • 【Linux学习笔记】进程概念(中)
  • scanpy赋值问题
  • 腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板
  • odoo 按钮打印pdf报表
  • 用逻辑分析仪观察串口Uart数据波形
  • 数据结构-栈应用括号匹配
  • leetcode做题笔记209. 长度最小的子数组
  • 【机器学习】几种常用的机器学习调参方法
  • 使用免费 FlaskAPI 部署 YOLOv8
  • 不使用屏幕在树莓派4B安装Ubuntu22.04桌面版(64位)
  • Pymysql模块使用操作
  • 8+双疾病+WGCNA+多机器学习筛选疾病的共同靶点并验证表达
  • springboot如何获取前端请求头的值并加入ThreadLocal
  • 程序员想要网上接单却看花了眼?那这几个平台你可得收藏好了!
  • 前端食堂技术周刊第 102 期:Next.js 14、Yarn 4.0、State of HTML、SEO 从 0 到 1
  • GPT与人类共生:解析AI助手的兴起
  • HTML脚本、字符实体、URL
  • UOS安装Jenkins
  • 纯CSS实现卡片上绘制透明圆孔
  • 用前端框架Bootstrap的AdminLTE模板和Django实现后台首页的页面