selenium
selenium+Python
wjgccsdn
这个作者很懒,什么都没留下…
展开
-
python+selenium(15)---判断元素是否存在
有时在写用例时需要通过元素是否存在来验证用例是否执行通过。将判断元素是否存在封装起来,方便调用判断元素是否存在 def getElementExistance(self, dr, element_xpath): """通过元素xpath判断是否存在该元素,存在返回true,不存在返回false""" element_existance = True try: # 尝试寻找元素,如若没有找到则会抛出异常原创 2021-02-26 11:35:47 · 1844 阅读 · 1 评论 -
python+selenium(14)---定位table并获取table中的数据,并删除某一行数据(如果每行后面提供删除按钮)
1.定位table并获取数据 def get_table_content(self, dr, tableId): """ 读取列表数据 :param dr: :param tableId: 列表ID :return: """ arr = [] arr1 = [] # 根据table ID定位到表格 table = dr.find_elem原创 2021-02-24 15:03:40 · 5647 阅读 · 0 评论 -
python+selenium(13)---用例a和b产生依赖,a失败时b跳过
使用到了pytest.mark.dependency。这是一个pytest第三方插件,主要解决用例之间的依赖关系。如果依赖的上下文失败后续的用例会被标识为跳过执行,相当于执行了pytest.mark.skip一、用法:安装pip install pytest-dependency首先我们需要在用例开始的位置打上一个装饰器@pytest.mark.dependency(),这是代表这条用例作为主条件,如果这条用例失败,关联它的用例会跳过执行。在被关联的用例上,也打上带参数的装饰器@pytest原创 2021-02-23 16:21:08 · 464 阅读 · 1 评论 -
python+selenium(12)---操作时间选择框
时间选择框具有readonly属性,在操作时不能直接使用send_keys输入值,需要使用js去掉readonly属性,然后在进行赋值js = 'document.getElementById("inTimeDate").removeAttribute("readonly")'dr.execute_script(js)dr.find_element_by_xpath(".//*[@id='inTimeDate']").send_keys(sign_in_time)...原创 2021-02-22 14:27:20 · 1510 阅读 · 0 评论 -
python+selenium(11)---操作id为动态变化的frame(iframe)
在实际应用中会出现iframe ID或者name为动态的情况,导致定位不到iframe,导致失败。为了解决这个问题,试验了下面的方法,可以解决问题先定位到一组iframe,再通过index取需要切进去的frame并取到该frame的id,接下来就可以直接切换进frame具体代码如下:frame = dr.find_elements_by_tag_name("iframe")dr.switch_to.frame(frame[0].get_attribute('id'))...原创 2021-02-22 13:52:20 · 1521 阅读 · 0 评论 -
python+selenium(10)---pytest+allure+jenkins构建并发送邮件
一、jenkins安装allure插件系统管理》插件管理,搜索allure搜索到后进行安装,安装完成重启Jenkins,安装完成后显示为Allure Jenkins Plugin二、全局工具配置系统管理》全局工具配置三、在job中配置新建一个任务》设置》构建(build)四、构建查看生成的报告五、配置发送邮件先安装Email Extension Plugin插件,系统管理》系统设置1.设置jenkins地址和管理员邮箱地址2.设置发原创 2021-01-25 11:12:46 · 615 阅读 · 0 评论 -
python+selenium(9)---用例中添加日志
在工程中添加一个日志模块我们采用的是在用例中抛异常,打印日志。打印日志使用的是logginglog.py如下:import loggingfrom logging import handlersclass Logger(object): level_relations = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, .原创 2021-01-22 14:03:09 · 593 阅读 · 1 评论 -
python+selenium(8)---pytest+allure用例执行失败截图并展示在报告中
实现该功能要用到pytest中的hook函数(钩子函数),如下:可直接使用该代码# 用例失败后自动截图@pytest.hookimpl(tryfirst=True, hookwrapper=True)def pytest_runtest_makereport(item, call): """ 获取用例执行结果的钩子函数 :param item: :param call: :return: """ outcome = yield r原创 2021-01-18 16:46:53 · 2617 阅读 · 1 评论 -
python+selenium(7)---pytest+allure生成测试报告
1.下载安装allure下载合适版本https://github.com/allure-framework/allure2/releases,下载了2.13.0版本解压文件并将 bin目录添加到Path环境变量中验证allure:输入allure --version,返回版本信息则安装成功2.安装pytest和allure-pytestpip install pytestpip install allure-pytest3.执行测试用例在项目根目录下执行如下命令,就.原创 2021-01-15 16:10:51 · 702 阅读 · 2 评论 -
python+selenium(6)---pytest生成HTML测试报告
1.安装pytest -htmlpip install pytest -html2.执行命令生成HTML报告打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest --html=report.html执行完成后会在当前目录生成report.html,可打开查看原创 2021-01-15 15:39:07 · 335 阅读 · 0 评论 -
python+selenium(5)---pytest测试用例参数化之parametrize
1.pytest.mark.parametrize装饰器实现测试用例参数化@pytest.mark.parametrize(“方法中用到的参数名”,参数值)第一个参数是字符串,多个参数中间用逗号隔开 第二个参数是list,多组数据用元祖类型以登录为例:看到执行结果如下:一个通过,一个失败,互不影响...原创 2021-01-12 15:48:34 · 475 阅读 · 0 评论 -
python+selenium(4)---pytest测试用例参数话之conftest.py和yield简单的使用
conftest.py特点conftest.py 文件中存放参数化函数,可作用于模块内的所有测试用例conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置,pytest默认读取里面的配置conftest.py配置需要注意以下点:conftest.py配置脚本名称是固定的,不能改名称 conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件 不需要import导入 conftest.py,pytest用例会自动查找c原创 2021-01-09 14:40:23 · 1846 阅读 · 0 评论 -
python+selenium(3)---读取excel数据并使用该数据
1.Python读取excel通过xlrd库,因此先要安装该库2.安装完成后引用该库 import xlrd3.写一个读取excel的方法:for循环可根据实际情况进行改变4.在具体测试用例中引用该方法:原创 2021-01-05 11:21:14 · 442 阅读 · 0 评论 -
python+selenium(2)---在pycharm中使用pytest框架执行测试用例(一个简单的例子)
1.pytest安装安装命令:pip install -U pytest 安装后查看pytest版本:pytest -version2.在pycharm中设置pytest新建一个工程后,左上角file->Setting->Tools->Python Integrated Tools,选择py.test3.了解下pytest的用例设计原则文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类,并且不能带有init...原创 2020-12-31 15:26:42 · 952 阅读 · 2 评论 -
Python+selenium(1)---封装登录并引用
需要注意的地方:1.没有使用unittest框架,只是用了简单的调用函数 2.由于只是调用函数,所以函数是不需要有self的 3.由于要使用dr即driver ,所以封装的登录函数中需要有这个变量 4.调用函数时也需要传入这个参数在public下添加一个login.pydef login_in(dr, user, pw)...原创 2020-12-26 14:13:50 · 1490 阅读 · 0 评论