项目搭建环境
Pycharm创建Project
编写python执行
from selenium import webdriver # 引入Selenium的wendriver
import time
webdriver = webdriver.Chrome() #打开一个chrome浏览器
webdriver.get("https://www.ports-intl.com/zh/account/login.html") #在浏览器内打开一个URL
time.sleep(10)
webdriver.quit() #退出浏览器
元素信息定位,完成页面登陆操作
from selenium import webdriver # 引入Selenium的wendriver
import time
webdriver = webdriver.Chrome() #打开一个chrome浏览器
webdriver.get("https://www.ports-intl.com/zh/account/login.html") #在浏览器内打开一个URL
#元素定位
webdriver.find_element_by_xpath('//*[@name="username"]').send_keys('17811895038') #用户名元素定位并且输入信息
webdriver.find_element_by_xpath('//*[@name="password"]').send_keys('12345678') #密码元素定位并且输入信息
webdriver.find_element_by_xpath('//*[@id="submit"]').click() #登录按钮元素定位,并发出点击操作
time.sleep(10)
webdriver.find_element_by_xpath('//*[@class="header_account"]/span[2]/a').click() #退出账户
time.sleep(5)
webdriver.quit() #退出浏览器
创建用例代码
前置条件 | 测试场景 | 测试结果 |
用户登录 | 1.用户跳转到【收货地址管理】 | 1.成功跳转【收货地址管理】页面 |
2.点击【新增地址】按钮 | 2.页面加载【编辑收货地址】信息 | |
3.正确输入地址相关信息 | 3.确认信息已输入成功 | |
4.点击【保存】按钮 | 4.页面成功新增的收货地址并显示 |
from selenium import webdriver # 引入Selenium的wendriver
import time
webdriver = webdriver.Chrome() #打开一个chrome浏览器
webdriver.get("https://www.ports-intl.com/zh/account/login.html") #在浏览器内打开一个URL
#元素定位
webdriver.find_element_by_xpath('//*[@name="username"]').send_keys('17811895038') #用户名元素定位并且输入信息
webdriver.find_element_by_xpath('//*[@name="password"]').send_keys('12345678') #密码元素定位并且输入信息
webdriver.find_element_by_xpath('//*[@id="submit"]').click() #登录按钮元素定位,并发出点击操作
time.sleep(5)
#1.用户跳转到【收货地址管理】
webdriver.find_element_by_xpath('//*[@href="/zh/account/address"]').click()
# 2.点击【新增地址】按钮
time.sleep(5)
webdriver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').click()
time.sleep(5)
webdriver.find_element_by_xpath('//*[@name="si_last_name"]').send_keys('姓氏')
webdriver.find_element_by_xpath('//*[@name="si_firstname"]').send_keys('名称')
webdriver.find_element_by_xpath('//*[@name="si_tel_mobile"]').send_keys('17811895038')
webdriver.find_element_by_xpath('//*[@name="si_province"]').send_keys('17811895038')
time.sleep(5)
webdriver.find_element_by_xpath('//*[@name="si_province"]/option[5]').click()
time.sleep(5)
webdriver.find_element_by_xpath('//*[@name="si_city"]/option[5]').click()
time.sleep(5)
webdriver.find_element_by_xpath('//*[@name="si_district"]/option[5]').click()
webdriver.find_element_by_xpath('//*[@name="si_address"]').send_keys('张望里斯')
time.sleep(5)
#4.点击【保存】按钮
webdriver.find_element_by_xpath('//*[@class="btnstyle_s_b "]').click()
time.sleep(10)
webdriver.find_element_by_xpath('//*[@class="header_account"]/span[2]/a').click() #退出账户
time.sleep(5)
webdriver.quit() #退出浏览器
引入pytest 框架
import pytest
setup_class(self): 所有测试用例开始前执行一次 (只执行一次)
teardown_class(self): 测试用例全部执行完成后执行 只执行一次)
# setup_class(self): 所有测试用例开始前执行一次 (只执行一次)
def setup_class(self):
self.driver.get("https://www.ports-intl.com/zh/account/login.html") # 在浏览器内打开一个URL
self.driver.refresh()
time.sleep(5)
self.driver.find_element_by_xpath('//*[@name="username"]').send_keys('17811895038') # 用户名元素定位并且输入信息
self.driver.find_element_by_xpath('//*[@name="password"]').send_keys('12345678') # 密码元素定位并且输入信息
self.driver.find_element_by_xpath('//*[@id="submit"]').click() # 登录按钮元素定位,并发出点击操作
# teardown_class(self): 测试用例全部执行完成后执行 只执行一次)
def teardown_class(self):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@class="header_account"]/span[2]/a').click()
self.driver.quit()
with allure.step("第一步:用户跳转到【收货地址管理】"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@href="/zh/account/address"]').click()
time.sleep(5)
addressTextFlag = self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').text
assert '新增地址' == addressTextFlag # 针对用例每一步操作做断言
引入Allure框架
import allure
@allure.feature('用户添加地址测试用例') 测试报告内显示测试用例名称;
样式展示:
代码示例:
@allure.feature('用户添加地址测试用例') #在用例方法上添加即可
def test_addAddressd(self):
with allure.step("第一步:用户跳转到【收货地址管理】"):
with allure.step() 为用例划分测试步骤,在测试报告内显示;
样式展示:
代码示例:
with allure.step("第一步:用户跳转到【收货地址管理】"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@href="/zh/account/address"]').click()
time.sleep(5)
addressTextFlag = self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').text
assert '新增地址' == addressTextFlag
with allure.step("第二步:点击-新增地址-按钮"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').click()
addressTextFlag = self.driver.find_element_by_xpath('//*[@class="mt20 addressinfo"]/P/b').text
assert '编辑收货地址' == addressTextFlag
with allure.step() 为用例添加描述,在测试报告内显示;
样式展示:
代码示例:
@allure.feature('用户添加地址测试用例')
@allure.description('功能判定>> 用户添加完成在收获地址列表进行搜索比对是否包含新增地址')
def test_addAddressd(self):
with allure.step("第一步:用户跳转到【收货地址管理】"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@href="/zh/account/address"]').click()
time.sleep(5)
addressTextFlag = self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').text
assert '新增地址' == addressTextFlag
@allure.link()在测试报告内添加测试用例管理工具的链接,在测试报告内显示;
样式展示:
代码示例:
@allure.feature('用户添加地址测试用例')
@allure.description('功能判定>> 用户添加完成在收获地址列表进行搜索比对是否包含新增地址')
@allure.link('https:www.baidu.com')
def test_addAddressd(self):
with allure.step("第一步:用户跳转到【收货地址管理】"):
time.sleep(5)
执行:
总代码:
import pytest # 引入pytest框架 pip install pytest
from selenium import webdriver # 引入Selenium的wendriver pip install selenium
import allure # 引入allure框架 pip install allure-pytest
import time
class Test_addAddress_class():
options = webdriver.ChromeOptions()
options.add_argument('incognito')
options.add_argument('--start-maximized')
driver = webdriver.Chrome(chrome_options=options)
# setup_class(self): 所有测试用例开始前执行一次 (只执行一次)
def setup_class(self):
self.driver.get("https://www.ports-intl.com/zh/account/login.html") # 在浏览器内打开一个URL
self.driver.refresh()
time.sleep(5)
self.driver.find_element_by_xpath('//*[@name="username"]').send_keys('17811895038') # 用户名元素定位并且输入信息
self.driver.find_element_by_xpath('//*[@name="password"]').send_keys('12345678') # 密码元素定位并且输入信息
self.driver.find_element_by_xpath('//*[@id="submit"]').click() # 登录按钮元素定位,并发出点击操作
# teardown_class(self): 测试用例全部执行完成后执行 只执行一次)
def teardown_class(self):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@class="header_account"]/span[2]/a').click()
self.driver.quit()
@allure.feature('用户添加地址测试用例')
@allure.description('功能判定>> 用户添加完成在收获地址列表进行搜索比对是否包含新增地址')
@allure.link('https:www.baidu.com')
def test_addAddressd(self):
with allure.step("第一步:用户跳转到【收货地址管理】"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@href="/zh/account/address"]').click()
time.sleep(5)
addressTextFlag = self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').text
assert '新增地址' == addressTextFlag
with allure.step("第二步:点击-新增地址-按钮"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b"]').click()
addressTextFlag = self.driver.find_element_by_xpath('//*[@class="mt20 addressinfo"]/P/b').text
assert '编辑收货地址' == addressTextFlag
with allure.step("第三步:正确输入地址相关信息"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@name="si_last_name"]').send_keys('姓氏q')
self.driver.find_element_by_xpath('//*[@name="si_firstname"]').send_keys('名称w')
self.driver.find_element_by_xpath('//*[@name="si_tel_mobile"]').send_keys('17811845038')
self.driver.find_element_by_xpath('//*[@name="si_province"]').send_keys('17811495038')
time.sleep(5)
self.driver.find_element_by_xpath('//*[@name="si_province"]/option[5]').click()
time.sleep(5)
self.driver.find_element_by_xpath('//*[@name="si_city"]/option[5]').click()
time.sleep(5)
self.driver.find_element_by_xpath('//*[@name="si_district"]/option[5]').click()
self.driver.find_element_by_xpath('//*[@name="si_address"]').send_keys('张望里斯4')
with allure.step("第四步:点击【保存】按钮"):
time.sleep(5)
self.driver.find_element_by_xpath('//*[@class="btnstyle_s_b "]').click()
time.sleep(5)
with allure.step("第五步:最终的地址新增判断"):
addressList = self.driver.find_elements_by_xpath('//*[@class="addresslist"]/*[@class="row"]')
addressNum = len(addressList)
i = 0
while (i < addressNum):
addressText = addressList[i].text
i += 1
if "张望里斯4" == addressText:
assert "张望里斯4" in addressText
break
else:
assert "新增地址未查询到" == addressText
if __name__ == "__main__":
pytest.main(["-s", "--alluredir=report" "Test_addAddress.py"])
a
a