原理:通过python+selenium代替手工完成Web功能测试的操作
Web功能测试:
1.界面测试(界面显示是否符合预期)
2.连接测试(文案,链接地址)
3.功能测试(确保功能符合需求)
4.性能测试
5.安全测试
Web自动化原理:
访问网站
找到链接
点击查看
Web自动化实战
python+pycharm安装(已有)+selenium(进入cmd,输入pip install selenium)
定位元素:8种方式
元素的操作:
点击、输入、滑动、选择、悬停、滚动
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
#打开浏览器
driver=webdriver.Edge()
#访问网站
driver.get("http://testingedu.com.cn:8000/Home/user/login.html")
#找到元素,通过元素的id属性等
ele=driver.find_element(By.NAME,'password')
print(ele.get_attribute('outerHTML'))
#为了简单起见,可以使用复制xpath的形式
ele=driver.find_element(By.XPATH,'//a[text()="淘宝网"]')
#点击链接
ele.click()
#断言,判断上述链接是否正确
title=driver.title
print(title)
#前置条件,返回原页面
driver.back()
登录功能测试
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
#打开浏览器
driver=webdriver.Edge()
#隐式等待,网页加载需要时间:增加自动化测试的稳定性,不会影响运行效率率
driver.implicitly_wait(5)
#访问网站
driver.get("http://testingedu.com.cn:8000/Home/user/login.html")
#为了简单起见,可以使用复制xpath的形式
driver.find_element(By.XPATH,'//*[@id="username"]').send_keys('13800138006')
driver.find_element(By.XPATH,'//*[@id="password"]').send_keys('123456')
driver.find_element(By.XPATH,'//*[@id="verify_code"]').send_keys('123')
driver.find_element(By.XPATH,'//*[@class="J-login-submit"]').click()
#断言
nickname=driver.find_element(By.XPATH,'//*[@class="red userinfo"]').text
print(nickname)
升级化
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
class Login:
def __init__(self):
self.driver=webdriver.Edge()
self.driver.implicitly_wait(5)
def login(self,username,password):
"登录用例操作"
self.driver.get("http://testingedu.com.cn:8000/Home/user/login.html")
# 为了简单起见,可以使用复制xpath的形式
self.driver.find_element(By.XPATH, '//*[@id="username"]').send_keys(username)
self.driver.find_element(By.XPATH, '//*[@id="password"]').send_keys(password)
self.driver.find_element(By.XPATH, '//*[@id="verify_code"]').send_keys('123')
self.driver.find_element(By.XPATH, '//*[@class="J-login-submit"]').click()
def test_login_error(self):
"用户密码错误的用例"
self.login('13800138006','111111')
test=self.driver.find_element(By.XPATH, '//*[@class="layui-layer-content layui-layer-padding"]').text
print(test)
def test_login_none(self):
"用户密码错误的用例"
self.login('','111111')
test=self.driver.find_element(By.XPATH,'//*[@class="layui-layer-content layui-layer-padding"]').text
print(test)
def test_login_succ(self):
"用户密码正确的用例"
self.login('13800138006','123456')
nickname=self.driver.find_element(By.XPATH,'//*[@class="red userinfo"]').text
print(nickname)
if __name__=='__main__':
login=Login()
login.test_login_none()
login.test_login_error()
login.test_login_succ()