UI自动化测试实战
前言
前面我们已经搭建好了wordpress网站,如果需要查看运行效果可以看我前面的搭建文章,下面我们来进行自动化测试的练习。
示例
首先我们测试自动登陆
import unittest
from selenium import webdriver
import uuid
from time import sleep
username = passwd = '***'
uid = str(uuid.uuid1())
suid = ''.join(uid.split('-'))
url = 'http://139.199.192.100:8000/wp-login.php'
class Test_Blog(unittest.TestCase):
'''博客测试用例初始化配置'''
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get(url)
self.driver.implicitly_wait(10)
self.driver.maximize_window()
def tearDown(self):
self.driver.quit()
class test_login(Test_Blog):
'''博客登陆测试用例'''
def test_login(self):
self.driver.find_element_by_id('user_login').send_keys(username)
self.driver.find_element_by_id('user_pass').send_keys(passwd)
self.driver.find_element_by_id('rememberme').click()
self.driver.find_element_by_id('wp-submit').click()
sleep(1)
title_url = self.driver.current_url
assert 'wp-admin' in title_url, '登陆不成功或者断言错误'
if __name__ == '__main__':
unittest.main()
登陆之后,我们来测试写文章功能
import unittest
from selenium import webdriver
import uuid
from time import sleep
username = passwd = '***'
uid = str(uuid.uuid1())
suid = ''.join(uid.split('-'))
url = 'http://139.199.192.100:8000/wp-login.php'
class Test_Blog(unittest.TestCase):
'''博客测试用例初始化配置'''
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get(url)
self.driver.implicitly_wait(10)
self.driver.maximize_window()
def tearDown(self):
self.driver.quit()
class test_login(Test_Blog):
'''博客登陆测试用例'''
def test_login(self):
self.driver.find_element_by_id('user_login').send_keys(username)
self.driver.find_element_by_id('user_pass').send_keys(passwd)
self.driver.find_element_by_id('rememberme').click()
self.driver.find_element_by_id('wp-submit').click()
sleep(1)
title_url = self.driver.current_url
assert 'wp-admin' in title_url, '登陆不成功或者断言错误'
class test_write_Blog(Test_Blog):
'''博客写文章测试用例'''
def test_write_blog(self):
self.driver.find_element_by_id('user_login').send_keys(username)
self.driver.find_element_by_id('user_pass').send_keys(passwd)
self.driver.find_element_by_id('rememberme').click()
self.driver.find_element_by_id('wp-submit').click()
sleep(1)
self.driver.find_element_by_css_selector(
'#menu-posts > a >.wp-menu-name').click()
self.driver.find_element_by_css_selector('.page-title-action').click()
self.driver.find_element_by_css_selector(
'div.components-modal__header > button > svg').click()
sleep(1)
self.driver.find_element_by_css_selector(
'#post-title-0').send_keys(suid)
self.driver.find_element_by_css_selector(
'#post-content-0').send_keys(suid)
self.driver.find_element_by_css_selector(
'button.components-button.editor-post-publish-panel__toggle.editor-post-publish-button__button.is-primary').click()
self.driver.find_element_by_css_selector(
'div.editor-post-publish-panel__header-publish-button > button').click()
blog_status = self.driver.find_element_by_css_selector(
'div.components-panel__body.post-publish-panel__postpublish-header.is-opened').text
assert '已被发布' in blog_status, '文章未发布或断言错误'
if __name__ == '__main__':
unittest.main()
写文章测试完了,该把文章删除掉了,于是我们再来进行删除的测试用例,并且优化了登陆的代码
import unittest
from selenium import webdriver
import uuid
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
username = passwd = 'pyse_24'
uid = str(uuid.uuid1())
suid = ''.join(uid.split('-'))
url = 'http://139.199.192.100:8000/wp-login.php'
class Test_Blog(unittest.TestCase):
'''博客测试用例前置和后置'''
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get(url)
self.driver.implicitly_wait(10)
self.driver.maximize_window()
self.driver.find_element_by_id('user_login').send_keys(username)
self.driver.find_element_by_id('user_pass').send_keys(passwd)
self.driver.find_element_by_id('rememberme').click()
self.driver.find_element_by_id('wp-submit').click()
sleep(1)
def tearDown(self):
self.driver.quit()
class test_login(Test_Blog):
'''博客登陆测试用例'''
def test_login(self):
title_url = self.driver.current_url
assert 'wp-admin' in title_url, '登陆不成功或者断言错误'
class test_write_Blog(Test_Blog):
'''博客写文章测试用例'''
def test_write_blog(self):
self.driver.find_element_by_css_selector(
'#menu-posts > a >.wp-menu-name').click()
self.driver.find_element_by_css_selector('.page-title-action').click() #点击写文章
sleep(1)
self.driver.find_element_by_css_selector(
'div.components-modal__header > button > svg').click() #关闭弹窗
self.driver.find_element_by_css_selector(
'#post-title-0').send_keys(suid) #写标题
self.driver.find_element_by_css_selector(
'#post-content-0').send_keys(suid) #写文本
self.driver.find_element_by_css_selector(
'button.components-button.editor-post-publish-panel__toggle.editor-post-publish-button__button.is-primary').click() #点击发布
self.driver.find_element_by_css_selector(
'div.editor-post-publish-panel__header-publish-button > button').click()
blog_status = self.driver.find_element_by_css_selector(
'div.components-panel__body.post-publish-panel__postpublish-header.is-opened').text #获取发布状态
assert '已被发布' in blog_status, '文章未发布或断言错误'
class Test_Delete_Blog(Test_Blog):
'''博客删除测试用例'''
def test_delete_blog(self):
self.driver.find_element_by_css_selector(
'#menu-posts > a >.wp-menu-name').click()
mouse = self.driver.find_elements_by_css_selector(
'td.author.column-author > a')[0] # 定位第一行作者元素
ActionChains(self.driver).move_to_element(mouse).perform() # 鼠标悬停到第一行
blog_title_old = self.driver.find_elements_by_css_selector(
'td.title.column-title.has-row-actions.column-primary.page-title > div.row-actions > span.trash > a')[0].text
self.driver.find_elements_by_css_selector(
'td.title.column-title.has-row-actions.column-primary.page-title > div.row-actions > span.trash > a')[0].click()
blog_title_new = self.driver.find_elements_by_css_selector(
'td.title.column-title.has-row-actions.column-primary.page-title > div.row-actions > span.trash > a')[0].text
assert blog_title_old != blog_title_new # 判断删除前和删除后的同一元素位置的文本不相等
if __name__ == '__main__':
unittest.main()

UI自动化测试实战的更多相关文章
- Pytest UI自动化测试实战实例
前言 明天就放假了,4天小长假,是不是很开心!也许很多人要回老家帮家里种地,干农活.其实能陪陪家里人,帮忙干点农活还是挺开心的,希望大家有个愉快的假期!废话不多说哈,今天再来说说pytest吧,经过几 ...
- UI自动化测试框架(项目实战)python、Selenium(日志、邮件、pageobject)
其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://githu ...
- selenium2 Webdriver + Java 自动化测试实战和完全教程
selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...
- selenium2 python自动化测试实战(回归测试)
selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...
- Selenium2自动化测试实战序言
记得很久之前接触自动化的时候看了一本关于某早期自动化测试工具的书,书名已经记不得了,内容却一直印象深刻.因为那本书根本就是把官方文档有选择性的翻译一遍,对于实际应用来说其作用几乎是零.因此从那时候起我 ...
- UI自动化测试元素定位思想
2014年的最后一天,以一篇短文纪念一下. 经常看到有同学说UI自动化测试定位难,找不到北.这话是不错的,定位是难,灵活且复杂,需要经验加技术,但是有写东西是可以提炼出来作为思想去推而广之的. 简单来 ...
- Ui自动化测试上传文件方法都在这里了
前言 实施UI自动化测试的时候,经常会遇见上传文件的操作,那么对于上传文件你知道几种方法呢?今天我们就总结一下几种常用的上传文件的方法,并分析一下每个方法的优点和缺点以及哪种方法效率,稳定性更高 被测 ...
- 关于《Selenium3自动化测试实战--基于python语言》
2016年1月,机缘巧合下我出版了<Selenium2自动化测试实战--基于python语言>这本书,当时写书的原因是,大部分讲Selenium的书并不讲编程语言和单元测试框,如果想在项目 ...
- Selenium 与自动化测试 —— 《Selenium 2 自动化测试实战》读书笔记
背景 最近在弄 appium,然后顺便发现了 Selenium 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...
随机推荐
- java实现读取excel文件内容
package excel; import java.io.FileInputStream; import java.io.InputStream; import java.text.SimpleDa ...
- java中将信息写入excel
//实体类 package com.cn.peitest.excel; import java.io.Serializable; /** * 员工基本信息 * * @author pei */ pub ...
- Lambda 表达式实例
public class Java8Tester {/*** 语法 lambda 表达式的语法格式如下: (parameters) -> expression 或 (parameters) -& ...
- java并发包工具(java.util.Concurrent)
一.CyclicBarrier 作用:所有线程准备好才进行,只要一条线程没准备好,都不进行 用法:所有线程准备好以后调用CyclicBarrier的await方法,然后主线程执行CyclicBarri ...
- linux系统搭建ftp服务器及创建用户使用
linux 系统下搭建ftp服务器 ftp是什么 FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序. ...
- hive2
4.hive优化 1)跑sql的时候会出现的参数: In order to change the average load for a reducer (in bytes): set hive.exe ...
- Hive表的基本操作
目录 1. 创建表 2. 拷贝表 3. 查看表结构 4. 删除表 5. 修改表 5.1 表重命名 5.2 增.修.删分区 5.3 修改列信息 5.4 增加列 5.5 删除列 5.6 修改表的属性 1. ...
- JAVA原生mvc实现用户信息的增删查改
笔者最近学完jsp和servlet,于是心血来潮的打算写个简单的用户案例 环境准备: 开发工具eclipse jdk-1.8.0_72 tomcat-9.0.5 前端部分: 1.自己手写了一套样式 2 ...
- JavaScript 获取当天0点以及当前时间方法
js 取得今天0点: const start = new Date(new Date(new Date().toLocaleDateString()).getTime()); console.log( ...
- 剑指offer 面试题0:高质的代码:即考虑边界条件、特殊输入和错误处理
Q:把一个字符串转换为整数. A1:一个普通但漏洞百出的解法. int StrToInt(char* str) { int number = 0; while (*str != 0) { number ...