web UI自动化项目实战-项目

项目使用禅道,所以你需要搭建1个禅道,搭建禅道的方法和步骤见

https://www.cnblogs.com/xinhua19/p/13151296.html

搭建UI自动化的框架

第一步,搭建框架,从配置文件信息开始,然后读取配置文件,然后是读取驱动。

第二步,对selenium中的一些方法做二次封装

第三步,封装页面的元素对象和元素的新增,删除,查询,修改等操作

第四步,测试用例层,设计测试用例

selenium读取配置文件的方法封装

有了配置config.ini的配置文件,肯定是要读取这个配置文件的,话不多说,直接上代码

import os
import codecs
import configparser
import logging proDir = os.path.split(os.path.realpath(__file__))[0]
rootDir = os.path.dirname(proDir)
dataDir = os.path.join(rootDir, "data")
configPath = os.path.join(rootDir, "config", "config.ini") class ReadConfig:
def __init__(self):
fd = open(configPath)
data = fd.read() # remove BOM
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
file = codecs.open(configPath, "w")
file.write(data)
file.close()
fd.close() self.cf = configparser.ConfigParser()
self.cf.read(configPath) def get_email(self, name):
value = self.cf.get("EMAIL", name)
return value def get_http(self, name):
value = self.cf.get("HTTP", name)
return value def get_db(self, name):
value = self.cf.get("DATABASE", name)
return value def get_postgresql(self, name):
value = self.cf.get("POSTGRESQL", name)
return value def get_loglevel(self, name):
value = self.cf.get("LOG", name)
return value def get_account(self, name):
value = self.cf.get("ACCOUNT", name)
return value def get_accounts(self):
return self.cf.items("ACCOUNT") def get_webapp(self, name):
return self.cf.get("WEBAPP", name)

那么读取到了配置文件信息后,肯定也是要应用配置文件的,话不多说,直接上代码

# coding:utf-8
import time
from utils import readconfig
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC localReadConfig = readconfig.ReadConfig() class BasePage:
scheme = localReadConfig.get_http("scheme")
base_url = scheme + r"://" + localReadConfig.get_http("baseurl")+':'+localReadConfig.get_http("port")+'/zentao' def __init__(self, driver, url=None):
self.url = url
self.driver = driver
self.timeout = 12
self.wait = WebDriverWait(self.driver, self.timeout) self.url = self.base_url
if url:
self.url = self.base_url + url def open(self, url=None):
if not url:
self.driver.get(self.url)
else:
self.driver.get(url)
self.driver.maximize_window() def wait_for_element_presence(self, locator):
self.wait.until(EC.presence_of_element_located(locator)) def find_element(self, locator):
try:
return self.driver.find_element(*locator)
except Exception as e:
print("element not be found {}".format(locator[1]))
print("python tell us: {}".format(str(e)))
return None def wait_for_element_visible(self, locator):
self.wait.until(EC.visibility_of_element_located(locator)) def wait_for_element_invisible(self, locator):
self.wait.until(EC.invisibility_of_element(locator)) def implicitly_wait(self, time_to_wait=3):
self.driver.implicitly_wait(time_to_wait) @staticmethod
def sleep(t=1):
time.sleep(t)

selenium读取驱动的方法封装

selenium常用方法的二次封装

页面元素对象和 操作的封装

测试用例调用操作,执行测试用例

HTMLTestRunner,py 生成报告

执行结束查看报告

selenium(12)-web UI自动化项目实战(PO模式,代码封装)的更多相关文章

  1. Selenium系列(十四) - Web UI 自动化基础实战(1)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  2. Selenium系列(十五) - Web UI 自动化基础实战(2)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  3. Selenium系列(十六) - Web UI 自动化基础实战(3)

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  4. Selenium Web 自动化 - 项目实战(三)

    Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解  3.1 解析新增页面目录  3.2 解析新增测试用例目录  3. ...

  5. Selenium Web 自动化 - 项目实战(二)

    Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...

  6. Selenium Web 自动化 - 项目实战环境准备

    Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG  1.1 安装TestNG  1.2 添加TestNG类库2 部署Maven  2.1 mav ...

  7. mxgraph进阶(三)Web绘图——mxGraph项目实战(精华篇)

    Web绘图--mxGraph项目实战(精华篇) 声明     本文部分内容所属论文现已发表,请慎重对待. 需求 由于小论文实验需求,需要实现根据用户日志提取出行为序列,然后根据行为序列生成有向图的形式 ...

  8. Selenium Web 自动化 - 项目实战(一)

    Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...

  9. 【Robot Framework 项目实战 02】SeleniumLibrary Web UI 自动化

    前言 SeleniumLibrary 是针对 Robot Framework 开发的 Selenium 库.它也 Robot Framework 下面最流程的库之一.主要用于编写 Web UI 自动化 ...

  10. Python—UI自动化完整实战

    实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...

随机推荐

  1. sqlplus 配置方法及相关命令

    sqlplus 配置方法及相关命令 1.配置文件 1.1 全局模式什么叫全局模式呢:当我们配置完sqlplus工具加载配置文件后,无论在哪个目录下登陆数据库,您设置[sqlplus提示符样子,在任何目 ...

  2. HDU 2846 Repository(字典树,标记)

    题目 字典树,注意初始化的位置~!!位置放错,永远也到不了终点了org.... 我是用数组模拟的字典树,这就要注意内存开多少了,,要开的不大不小刚刚好真的不容易啊.... 我用了val来标记是否是同一 ...

  3. HDU4289Control(最大流)

    看了这道题,然后重新开始练习自己的刚敲不久的网络流,发现还是难以一遍敲得完整啊,,,,, 调了...遍,改了...遍,测了...遍,交了,,,遍,总算是A了,,不简单啊 然后试着用了其他两种算法EK和 ...

  4. MYSQL 查看表上索引的 1 方法

    前期准备: create table T9(A int ,B text,C text,fulltext index fix_test_for_T8_B(B));#在定义表的时候加索引 create u ...

  5. JS控制静态页面之间传递参数获取参数并应用

    在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a ...

  6. ubantu搭建oj——第一天(6.11)

    oj第一份作业: 按照DMOJ的文档将代码搬运到ubantu上 sudo apt install git gcc g++ make python-dev libxml2-dev libxslt1-de ...

  7. Visual Studio 代码补全功能有时候会失效的原因

    大部分时候失效是因为你的代码有的地方有错误!!

  8. 好消息啊,有些c似乎不用加厂商前缀了

    今天写程序,一个不小心,没写厂商前缀,然而,,,,,,, 可以运行了(我居然不知道这个消息!!!!) 赶紧写几个字纪念一下. (把鼠标移动到红色的字上边~~~) don' you think that ...

  9. 为什么我们不应该使用微信或者 QQ 作为团队协作的 IM 工具?

    如果你的团队没有觉得微信是低效的团队 IM 工具,那只有两种可能: 团队成员很少使用微信进行私人的生活和娱乐. 你就是一个低效的团队,而且还不自知. 本文内容 微信,连接一切 每个人都有微信 微信,低 ...

  10. mysql级联删除

    一个building对应多个rooms,building删除----级联删除相关的rooms 第一步, 创建buildings表,如下创建语句: USE testdb; CREATE TABLE bu ...