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 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...
随机推荐
- replaceAll
/** * 根据正则是,替换对应内容 * @return */ public static String replaceByRegex(String regex,String src,Strin ...
- Error running 'DemoApplication': No jdk for module 'demo' 没有jdk
方案1----- 按理说jdk都是在File->Project Structure里面设置就可以了,而且现在检查了也是没有问题 后来几经折腾,通过直接搜索Settings里面的jdk,发现还有这 ...
- JAVA NIO Selector Channel
These four events are represented by the four SelectionKey constants: SelectionKey.OP_CONNECT Select ...
- jQuery EasyUI学习一
1. jQuery EasyUI介绍 1. 创建组件的方式和原理(掌握) 2. 组件三要素(掌握) 3. Panel.LinkButton.上下文菜单;(掌握) 简介 2.1. jQuer ...
- 腾讯IOT安卓开发初探
目录 腾讯IOT 安卓开发初探 Tecent IOT 开发平台的使用 新建项目 创建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 安卓开发 前置配置 data.json ...
- Servlet[JAX-RS Servlet]的Servlet.init()引发异常
代码环境 Eclipse2017 : 问题出现: 在测试Hello servlet时发生 org.apache.catalina.core.ApplicationContext log严重: Serv ...
- Docker进行MySQL主从复制操作
Docker的相关操作 与 Docker下MySQL容器的安装 https://www.cnblogs.com/yumq/p/14253360.html 本次实验我是在单机状态下进行mysql的主从复 ...
- Linux性能相关命令
Linux性能相关命令 目录 Linux性能相关命令 1. 查看硬盘相关信息 2. 查看CPU相关信息 3. 查看内存相关信息 4. 查看进程运行的信息 1. 查看硬盘相关信息 cat /proc/s ...
- 九:APP及其他资产
APP提取一键反编译提取 APP抓数据包进行工具配合 各种第三方应用相关探针技术 各种服务器接口相关探针技术 APP提取及抓包及后续配合 某APK一键提取反编译 利用burp历史抓更多URL 某IP无 ...
- mysql中的kill
show processlist;查看id, 然后 kill id ; 就行了.