封装查找元素以及集成日志输出,Base模块

关于查找元素封装,Base模块

"""
Selenium 封装基类

封装查找元素以及集成日志输出
"""

from HTMLReport import logger
from selenium import webdriver
from selenium.webdriver.remote.webelement import WebElement

class Base(object):
    def __init__(self, driver: webdriver.Remote = None):
        self.driver = driver
        self.logger = logger()

    def find_element(self, locator: tuple) -> WebElement:
        """查找单个元素

        :param locator: 定位器(by=By.ID, value=None)
        :return: WebElement
        """
        self.logger.info(f"查找元素:{locator}")
        try:
            element = self.driver.find_element(*locator)
        except Exception:
            self.logger.info("查找元素失败")
            raise
        else:
            self.logger.info("查找元素成功")
        return element

    def find_elements(self, locator: tuple):
        """查找元素集合

        :param locator: 定位器(by=By.ID, value=None)
        :return: 元素对象集合
        :rtype: list of WebElement
        """
        self.logger.info(f"查找元素集合:{locator}")
        elements = self.driver.find_elements(*locator)
        self.logger.info(f"查找到{len(elements)}个元素")
        return elements

原文地址:https://www.cnblogs.com/CesareZhang/p/11140084.html

时间: 2024-10-13 12:14:14

封装查找元素以及集成日志输出,Base模块的相关文章

使用webdriverwait封装查找元素方法

对于selenium原生的查找元素方法进行封装,在timeout规定时间内循环查找页面上有没有某个元素 这样封装的好处: 1.可以有效提高查找元素的小吕,避免元素还没加载完就抛异常 2.相对于time.sleep和implictly_wait更节省时间 3.大大的减少重复代码,使得用例书写更简洁 代码: #coding:utf-8 #封装元素方法from selenium import webdriverfrom selenium.webdriver.support.ui import WebD

Python日志输出——logging模块

1. logging介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式. logging模块与log4j的机制是一样的,只是具体的实现细节不同.模块提供logger,handler,filter,formatter. logger:提供日志接口,供应用代码使用.logger最长用的操作有两类:配置和

使用再哈希算法查找元素

使用再哈希算法查找元素: /* hash search, using rehash method if find k, return if not find, d=(d+step)%m, rehash find */ int SearchHash(HashTable H, KeyType k) { int d, d1, m; m = H.tableSize; d = d1 = k%m; while(H.data[d].key != -1) { if(H.data[d].key == k) //h

javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式

原文:javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式 一.背景:一个表单中,要修改一些li中有class=box的样式,将它的background设置为red红色.一般的做法是我们可以先找到父级元素 ,然后由父级元素找到所有相关tagName,最后,来一个if判断,如果class属性为box,则修改之 var oUl = document.getElementById("ul1");                          

Log4j将不同Package的日志输出到不同的文件

转自:http://www.crazyant.net/1931.html 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程的处理日志: 外部接口访问的参数.返回结果等接口日志: Service访问数据库产生的SQL日志: 这其中,消息日志和后台线程的日志数据量非常庞大,如果所有日志打印在一个文件中,使用tail -f log.log文件,会发现日

.NET Core的日志[2]:将日志输出到控制台

对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上.针对控制台的Logger是一个类型为ConsoleLogger的对象,ConsoleLogger对应的LoggerProvider类型为ConsoleLoggerProvider,这两个类型都定义在 NuGet包"Microsoft.Extensions.Logging.Console"之中. 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一

FFmpeg源代码分析:日志输出系统(av_log()等)

本文我们看一下FFmpeg的日志(Log)输出系统的源代码.日志输出部分的核心函数只有一个:av_log().使用av_log()在控制台输出日志的效果如下图所示. 函数调用结构图 FFmpeg日志输出系统的函数调用结构图如图所示. av_log() av_log()是FFmpeg中输出日志的函数.随便打开一个FFmpeg的源代码文件,就会发现其中遍布着av_log()函数.一般情况下FFmpeg类库的源代码中是不允许使用printf()这种的函数的,所有的输出一律使用av_log().av_l

web项目Log4j日志输出路径配置问题

问题描述:一个web项目想在一个tomcat下运行多个实例(通过修改war包名称的实现),然后每个实例都将日志输出到tomcat的logs目录下实例名命名的文件夹下进行区分查看每个实例日志,要求通过尽可能少的改动配置文件,最好修改实例名后可以不修改log4j的配置文件. 实现分析:一般实现上面需求,需要在修改完war包名称之外要再做下面配置: 1.修改每个实例名下web.xml中参数webAppRootKey为不同值.同一个tomcat下运行多个web应用时,该值相同的话,运行时会抛异常. <c

通配置文件的方式控制java.util.logging.Logger日志输出

转自:http://zochen.iteye.com/blog/616151 简单的实现了下利用JDK中类java.util.logging.Logger来记录日志.主要在于仿照log4j方式用配置文件来配置日志的输出.网络上关于如何使用java.util.logging.Logger的文章很多,但是没有完整的如何通过配置配置文件来达到控制日志输出的资料.本文的目的在于此,欢迎拍砖.   上码... 1.首先封装了个LogManager.该类的主要作用就是static块中的代码,意在读取prop