python+selenium-UI自动框架之[优化]元素查找和BasePage页面

痛点:在页面查找元素的时候会遇到找不到或者其他无法处理某个字段的情况,又或者想要在输出的log或者report里面显示这个字段名称,这时候加上字段名称就很重要!

[3]python+selenium - UI自动框架之封装查找元素icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/139117915对上面一篇文章做优化

Element.py

from typing import Optional, Union
from selenium.common import TimeoutException, StaleElementReferenceException, NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from public.log import logclass ElementFinder(object):def __init__(self, driver: WebDriver):self._driver = driverdef find_element(self, by: Union[By, str], value: str, display_name: Optional[str] = None,  time: int = 5, internal=0.5):_locator = (by, value)if display_name is None:display_name = valuefor _ in range(2):log.info('[100]:find element: {ele}'.format(ele=display_name))try:_element = WebDriverWait(self._driver, time, internal).until(ec.presence_of_element_located(_locator))return _elementexcept TimeoutException:log.exception('[400]:%s not find ' % display_name)except StaleElementReferenceException as e:log.exception('[401]:StaleElementReferenceException %s' % e)continueexcept NoSuchElementException as e:log.exception('[402]: NoSuchElement %s' % e)except Exception as e:log.exception('[403]:unknown error %s' % e)break

举个例子:

    inputBox = ('id', 'kw','input box')searchBtn = ('id', 'su', 'search button')

Note:元素定位的时候,可以加上字段的’名称‘,当然也可以不加,这是一个非必要参数

相应地,在BasePage页面调用查找元素函数的时候也需要做改动,因为传给查找元素的参数多了一个字段。

[4]python+selenium - UI自动框架之封装基类BasePage页面icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/140102485只对basePage里面的一个功能做改动,其他类似要自己手动改:

basePage.py

from selenium.common import WebDriverException
from public.elementFind import ElementFinder
from public.log import logclass BasePage(ElementFinder):def click(self, locator):_element = self.find_element(*locator)if not _element:log.warning('[400]element {ele} not exits'.format(ele=locator))for _ in range(2):try:_element.click()breakexcept WebDriverException as e:log.exception('[401]:click {ele} failed,{info}'.format(ele=locator, info=e))except Exception as e:log.warning('[404]:click {ele},unknown error:{error}'.format(ele=locator, error=e))raise 'StopTestCaseException'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP微信小程序视频图文流量主变现小程序系统源码

💰微信小程序新机遇!视频图文流量主变现秘籍🔑 🚀【流量变现新风口】🚀 还在为微信小程序的庞大流量如何转化为真金白银而苦恼吗?今天,就带你揭秘“微信小程序视频图文流量主变现小程序”的神…

GPT-5:探索NLP新纪元的无限可能

目录 GPT-5: 定义自然语言处理新纪元的全方位突破引言: 迈向未来的语言之桥算法与架构: 深度进化的基石多模态融合: 超越文本的智慧对话连贯性与情境感知: 无缝交流的艺术个性化与定制化: 专属服务的未来伦理与安全: 负责任的创新GPT系列发展史: 迈向卓越的每一步结语: 共创智能…

Linux账户和组管理——账户和工作组分类,用户账号文件,/etc/passwd文件中7个字段,id 命令

## 账户和工作组的分类 ### 用户分为三类: - 超级账户——账户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。 - 系统账户——是Linux系统正常…

几种常用的产生负电源的方法

电源电路是电路设计的重要环节,一般情况下,单电源能实现功能的用单电源就行,可选的方案很多,DC-DC、LDO等芯片很多。有时候,单电源无法满足需求时,就必须用到负电源。 今天就来介绍几种常用的负电源产生的…

北京金融联盟创新应用2024年第五期“圆桌会议”成功召开

来自信创CPU厂商、金融科技相关企业、以及银行证券等机构的数十名参会代表齐聚北京,围绕信创服务器芯片架构使用策略等议题,展开了深入的讨论,为金融信创与数字化转型的进一步深入发展提供了丰富的建议和参考。 会议围绕信创服务器芯片架构使…

什么是业务架构、数据架构、应用架构和技术架构

TOGAF(The Open Group Architecture Framework)是一个广泛应用的企业架构框架,旨在帮助组织高效地进行架构设计和管理。而TOGAF的核心就是由我们熟知的四大架构领域组成:业务架构、数据架构、应用架构和技术架构。 所以今天我们就来聊聊,企业…

高通平台 android7.1 蓝牙的可见性设置

1、情景 本机设备只打开蓝牙开关,但不停留在设置里面蓝牙页面时,其他设备扫描不到本机设备。 2、Android7.1中,默认的行为是,只有在设置里面的蓝牙页面,才会开启蓝牙的可见性;如果只是打开下拉栏的蓝牙快捷…

基于MacOS系统Sonoma 14.5的SSH服务禁止密码登录

基于系统Sonoma 14.5,不同系统有所差异。 修改sshd_config文件 sudo vim /etc/ssh/sshd_config找到以下两行取消注释,修改值为 no PasswordAuthentication no KbdInteractiveAuthentication no重启sshd服务 # 关闭服务 sudo launchctl unload -w /System…

安泰电压放大器的选型方案是什么

电压放大器是一种常见的电路元件,广泛应用于各种电子设备中。在选择电压放大器的时候,我们需要考虑一系列因素,以确保选型方案能够满足实际需求。下面安泰电子将详细介绍电压放大器选型的主要考虑因素,包括应用需求、技术性能、成…

自己写的逆向案例十二——一号店登录密码逆向

网址:1号店登录 找到登录接口: 查看栈 直接跟栈,不多说 ,点击doubblesubmit栈 很明显发现加密位置,而且有很明显的提示,这是一个标准RSA类型的,看到new JSEncrypt和setPublicKey就知道了&…

【AI大模型新型智算中心技术建设白皮书 2024】

文末有福利! 一、新算效——重塑计算架构 1.1 下一代 AI 芯片设计思路 以 GPU 为 代 表 的 高 性 能 并 行 计 算 芯 片 架 构 和 以 针 对 AI 领 域 专 用 加 速(DSA, Domain Specific Architecture,DSA)为代表的芯片架构是目…

setuptools打包-分发-安装-发布

一、定义 学习网址setup.py 编写打包安装开源到PYPI中 二、实现 学习网址 https://python.iswbm.com/c08/c08_15.htmlsetup.py 编写 采用分发工具setuptools进行发布,因此采用setuptools包进行setup.py的编写 demo案例 from setuptools import setup, find_pack…

springboot下 创建TCO客户端,并发送消息

import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;import java.io.*; import java.net.Socket;/*** 请求tcp接口** author Mr丶s* date 2024/7/10 下午3:03* description*/ Slf4j Service public class TcpClientService {private Socket soc…

在Office里面无缝使用任何一家AI大模型,免费的!

昨天一个朋友说他在Word里面,用了一个插件,可以在右侧和AI对话,然后把AI生成的内容载入到左边的文档中。 我当时心理的想法:我这是穿越了吗?这不是我去年2月就实现,然后又扔掉的功能吗? 是的&a…

paddla模型转gguf

在使用ollama配置本地模型时,只支持gguf格式的模型,所以我们首先需要把自己的模型转化为bin格式,本文为paddle,onnx,pytorch格式的模型提供说明,safetensors格式比较简单请参考官方文档,或其它教…

Springboot自习室在线预约系统-计算机毕业设计源码050000

摘 要 远程预约是一种全新的网络租用方式,它通过互联网突破了时间和空间限制,实现了便捷快速的预约与管理功能。在对数据信息有效组织并整合了一定使用功能后,远程预约系统可以方便地实现预约与取消,以及信息查询等功能。经过本人…

vscode gitee问题

如果提交报user.name和user.email错误时,在本地工作目录中.git隐藏文件夹中,config文件添加,添加的名字和email地址--远程git仓库的登录名字和email地址。 [user] name xxx email xxx 分支合并:是把别的分支合并到所在分支。

2024最适合小白的Midjourney教程,值得收藏!

一、Midjourney 的提示词 1、提示可以包括一个或多个图像 URL、多个文本短语以及一个或多个参数 1)Image Prompts(图像提示):可以将图像 URL 添加到提示中以影响最终结果的样式和内容。图像 URL 始终出现在提示的前面。文件应以.…

配置 Node.js 内存限制

配置 Node.js 内存限制 Node.js 应用程序通常需要配置堆内存的大小以优化性能和避免内存溢出问题。你可以通过命令行参数、环境变量或系统属性来设置 Node.js 的内存限制。下面将分别介绍在 Windows、Linux 和 macOS 系统下的配置方法。 Windows 系统 1. 命令行参数方式 在…

爆款文案管理系统设计

设计一个爆款文案管理系统,目标是帮助营销团队高效地创建、管理并分析吸引人的文案,以提升产品或服务的市场吸引力和销售转化率。以下是一些关键功能和设计考量点: 1. 用户友好界面 简洁直观的界面:确保系统界面清晰&#xff0c…