百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Python+selenium自动化之判定元素是否存在

liuian 2025-02-18 12:23 44 浏览

在测试过程中,我碰到过这类的问题,使用find_element却找不到某个元素而产生异常,这就需要在操作某个元素之前判定该元素是否存在,而selenium中没有判定元素是否存在的方法,或者判定相同的元素有几个,需要操作对象是第几个。但是,有人已经总结一些相关的方式方法,下面还是通过实例说明。

find_elements获取元素个数

如果确定查找的元素在网页中只有一个,那么完全可以用find_element(),但如果有多个满足要求的节点,用find_element()就只能得到第一个节点了,所以查找多个节点时,应该使用find_elements()更好。即使元素只有唯一的一个时,由于网络时延或者弹窗前后台切换导致操作该元素时,该元素不存在,就可以使用find_elements来判定元素个数是否不为零,再进行相关操作。Selenium中find_elements的方法如下,但是注意复数形式,别乱用。


Find_elements的方法很多,如果常用判定最好自己写一个函数,方便调用,通常选择CSS或xpath。返回0则页面没有这个元素,返回1则仅有1个元素,其它返回则说明有多个该元素。

还是以企业邮箱为例,企业邮箱默认使用二维码方式登录,但是想要使用账户密码登录,就需要判定“账户密码登录”元素是否存在,我们可以使用 Ranorex Selocity直接复制该元素的xpath。


但是这类有一个确定,就是当页面存在多个同样的元素时,也是返回true,可能需要操作的并不是第一个。


捕获异常

捕获异常是使用find_element方法无法获取元素则会抛出异常,如果找到元素则会返回True。


# -*- coding: UTF-8 -*-from selenium import webdriver

driver = webdriver.Firefox()

driver.implicitly_wait(20)

# 打开腾讯企业邮箱

driver.get("https://exmail.qq.com/login")

#判定元素是否存在def test_elements_judge(xpath):

test_element = driver.find_elements_by_xpath(xpath)

if len(test_element) == 1:

return True

else:

return False

#捕获异常

def test_exceptions(xpath):

try:

driver.find_element_by_xpath(xpath)

return True

except:

return False

if test_exceptions("//form[@id='loginForm']"

"/div[3]/div[@class='login_scan_footer']/a[1]"):

driver.find_element_by_xpath("//form[@id='loginForm']" "/div[3]/div[@class='"

"login_scan_footer']/a[1]").click()


相关推荐

三星手机系统下载(三星手机新版本下载)

三星手机下载系统有几种方法,其中最常见的方法是通过手机的设置菜单来下载系统更新。用户可以进入手机的设置菜单,找到“关于手机”或“软件更新”选项,然后点击“检查更新”来查看是否有可用的系统更新。如果有更...

安装系统要在u盘下载什么(安装系统对u盘要求)

、U盘装系统分两种,一种是pe启动盘,一种是使用制作工具直接将系统刻录到U盘2、系统镜像也分很多种,ghost系统镜像有iso和gho两种,原版系统镜像有iso和wim两种3、如果是大白菜pe启动...

原版win7家庭版(win7家庭版怎么样)

同配置下的流畅度Win7家庭普通版》家庭高级版》专业版》旗舰版各版本的的功能存在差异,功能越少运行越流畅,因为后台进程较少。办公的话建议专业版起步,游戏的话就无所谓了。网上有一些精简版,跑起来贼流畅...

win7搜索不到共享打印机(win7共享打印机搜索不到打印机)

win7上搜索不到共享的打印机解决方法如下:1、点击开始菜单,在搜索栏中输入“services.msc”(输入时不要打引号),在搜索结果中启动程序。如果此时弹出用户账户控制窗口,请点击“继续”。2...

无线显示不可上网怎么回事(无线不可上网怎么回事手机能连上)

一、故障原因:1、路由器不稳定有些无线路由器、光猫(宽带猫)的质量比较差,长时间运行后会出现死机等一系列的问题。2、宽带出现故障如果家的wifi,之前连接后可以上网,突然就出现了无法上网的这个问题。并...

win7无本地连接(windows7本地连接无internet访问)

1、找到任务栏右下角右键任何一个连接,出现的“打开网络和共享中心”2、当然如果没有网络连接图标,也可以找到“网络”图标右键“属性”功能打开网络中心3、在“网络和共享中心”菜单页面,找到右上角有一个“更...

下载了个驱动精灵却安装不了

1、安装驱动之前应该先查看一下操作系统是否合适。32位驱动无法安装在64位驱动上。2、安装前先检测驱动是否余有残留,将其清理干净,不然容易导致失败。3、装之前可以先进行检测一下,如果缺少安装驱动的组件...

windows10专业版和家庭版哪个好

专业版好Win10专业版(Win10Pro)主要面向电脑技术爱好者和企业技术人员,除了拥有Win10家庭版所包含的应用商店、Edge浏览器、小娜助手、WindowsHello等外,还内置一系列W...

win8改win7系统bios怎么设置

开机按F1或是Fn+F1进入bios:1、进入Security—SecureBoot—Disabled2、进入Startup—UEFI/LegacyBoot选项,改为Both,下面的选项UEFI/...

thinkpad重装系统u盘启动(thinkpad优盘重装win7系统步骤)

要使用Thinkpad从U盘启动装系统,您需要按照以下步骤进行操作:1.插入Thinkpad的U盘,并确保U盘已格式化。2.下载并安装一个U启动软件,该软件可以在Windows或MacOS上使用。...

校园网tplink路由器设置教程

1:看看路由器后面的接口。电源口连接电源用,LAN口可连接电脑,交换机,AP等。WAN口是连接外网用的,例如接“宽带猫”。  2:反过来路由器的背面有设置相关内容,产品序列号等信息。路由器的默认地址是...

游戏笔记本电脑推荐性价比高2025

目前无法确定具体哪款笔记本电脑在2023年的性价比最高。因为未来三年内,科技和市场都将有很大的发展和变化,同时厂商将陆续推出新款产品,而且各款笔记本电脑的定位和价格也会有所不同。除此之外,不同消费者对...

windows11支持安卓应用(windows11来了!首次支持安卓应用)

可以安装。Win11运行安卓App实际上是使用虚拟机来实现的,需要在Windows商店下载运行一个名为WindowsSubsystemforAndroid(简称WSA)的app来实现。但目前,我...

如何设置笔记本电脑无线网络连接
如何设置笔记本电脑无线网络连接

点击任务栏右下角的网络图标,点击WLAN,点击一个WiFi,点击连接,输入正确的网络安全密钥,就可以连接WiFi了。...

2026-01-01 14:55 liuian

怎么把电脑桌面的图标变小(怎么把电脑桌面图标变小win10)

设置任务栏的图标大小的方法如下1.首先我们右键电脑底下的任务栏2.然后点击“属性”3.在任务栏里,打钩“使用小图标”,或使用大图标及标准。4.当然我们还可以设置任务栏的位置,要就是说我们可以设置图标的...