admin管理员组文章数量:1516870
智能化软件测试
测试任务: 在 要求:以下测试,需以POM模式编写任务1:在2022年的番剧中,按照“追番人数”升序排序,获取两页的番剧的追番人数,并测试两页番剧的追番人数是否是升序排序; 任务2:在2022年的番剧中,按照“追番人数”升序排序,获取两页的番剧的番名+集数,并测试2022番剧页面 与 每一个番剧的页面中的番名+集数,是否一致; 任务3:在“鬼灭之刃 游郭篇”的番剧页面中,测试该番的集数 与 右侧的选集是否一致; 任务4:在2023年的番剧中,按照“最高评分”进行排序,获取两页番剧的评分,测试评分排序是否正确; 任务5:在“番剧首页”的页面上方,有个会随着时间不断变动的推荐番剧区域,这里需要通过selenium控制鼠标移动到这些推荐番剧上,测试番剧的名称是否一致,如下图框住所示;
目录
一、搭建框架+创建页面对象脚本
二、创建页面对象的基类(base_page.py)
三、各页面对象脚本代码
任务1:
①编写blibli_index_object01.py
②编写blibli_get_fanju_name_number01.py
③编写test01_case_Number_of_followers.py(任务1:运行此py文件)
任务1运行结果图:
任务2:
①编写blibli_index_object02.py
②编写blibli_get_fanju_name_number02.py
③编写blibli_xinfan_object02.py
④编写test02_case_Get_name_number.py(任务2:运行此py文件)
任务2运行结果图:
任务3:
①编写blibli_index_object03.py
②编写blibli_get_fanju_name_number03.py
③编写blibli_xinfan_object03.py
④编写test03_case_jishu_right_jishu.py(任务3:运行此py文件)
任务3运行结果图:
任务4:
①编写blibli_index_object04.py
②编写blibli_get_fanju_name_number04.py
③编写test04_case_score.py(任务4:运行此py文件)
任务4运行结果图:
任务5:
①编写blibli_index_object05.py
②编写blibli_get_fanju_name_number05.py
③编写test05_case.py(任务5:运行此py文件)
任务5运行结果图:
开始编写:
一、搭建框架+创建页面对象脚本
各任务所对应的py文件如下:
基类: base_page.py任务1:在2022年的番剧中,按照“追番人数”升序排序,获取两页的番剧的追番人数,并测试两页番剧的追番人数是否是升序排序; blibli_index_object01.py blibli_get_fanju_name_number01.py test01_case_Number_of_followers.py任务2:在2022年的番剧中,按照“追番人数”升序排序,获取两页的番剧的番名+集数,并测试2022番剧页面 与 每一个番剧的页面中的番名+集数,是否一致; blibli_index_object02.py blibli_get_fanju_name_number02.py blibli_xinfan_object02.py test02_case_Get_name_number.py任务3:在“鬼灭之刃 游郭篇”的番剧页面中,测试该番的集数 与 右侧的选集是否一致; blibli_index_object03.py blibli_get_fanju_name_number03.py blibli_xinfan_object03.py test03_case_jishu_right_jishu.py
任务4:在2023年的番剧中,按照“最高评分”进行排序,获取两页番剧的评分,测试评分排序是否正确; blibli_index_object04.py blibli_get_fanju_name_number04.py test04_case_score.py任务5:在“番剧首页”的页面上方,有个会随着时间不断变动的推荐番剧区域,这里需要通过selenium控制鼠标移动到这些推荐番剧上,测试番剧的名称是否一致,如下图框住所示; blibli_index_object05.py blibli_get_fanju_name_number05.py test05_case.py
二、创建页面对象的基类(base_page.py)
代码如下:
# 网页基类
class Base:# 创建临时的driver对象# driver = webdriver.Chrome()# 外界创建网页对象的时候,需要将浏览器传进来def __init__(self, driver):self.driver = driver# 打开网址def open(self, url):self.driver.get(url)# 元素查找,loc参数(by, value)def locator(self, loc):return self.driver.find_element(*loc)# 在指定父元素查找子元素def locatorByParent(self, parent, loc):return parent.find_element(*loc)# 查找多个元素def locators(self, loc):return self.driver.find_elements(*loc)# 在指定父元素查找多个子元素def locatorsByParent(self, parent, loc):return parent.find_elements(*loc)# 切换到当前页面def switch(self):# 将浏览器切换到当前页面window = self.driver.window_handlesself.driver.switch_to.window(window[-1])# 输入def input(self, loc, content):self.locator(loc).send_keys(content)# 点击def click(self, loc):self.locator(loc).click()# 写入数据def write(self, filePath, content, mode='w'):f = open(filePath, mode)f.write(content)f.close()
三、各页面对象脚本代码
任务1:
①编写blibli_index_object01.py
代码如下:
# 核心业务流程# 打开b站首页# 点击番剧按钮,打开番剧页面#点击2022年的番剧页面# 点击“追番人数”升序排序按钮# #把打开的番剧页面返回出去
from base_page.base_page import Base # 导入基类---(理解:导入功能模块)
import time
from page_object.blibli_get_fanju_name_number01 import BliBliFanju# b站首页
class BlibliIndex(Base):# urlurl = ""# 核心元素el_button = ('xpath', '//*[@id="i_cecream"]/div[2]/div[1]/div[3]/div[2]/div/div[1]/a[1]')el_button_2022 = ('xpath', '// *[ @ id = "home_v3_mod_index"] / div / div[3] / div / div / div[2] / a[1]')el_button_up = ('xpath', '// *[ @ id = "app"] / div[2] / div[1] / ul[1] / li[1] / span')# 核心业务def openBlibliFanju(self):# 打开b站首页self.open(self.url)# 等待一段时间time.sleep(1)# 点击番剧按钮,打开番剧页面self.locator(self.el_button).click()time.sleep(3)#切换到当前窗口self.switch()time.sleep(1)#点击2022年的番剧页面self.locator(self.el_button_2022).click()time.sleep(3)# 切换到当前窗口self.switch()# 点击“追番人数”升序排序按钮self.locator(self.el_button_up).click()time.sleep(2)# #把打开的番剧页面返回出去return BliBliFanju(self.driver)
②编写blibli_get_fanju_name_number01.py
代码如下:
import time
import re
from base_page.base_page import Base# b站番剧首页
class BliBliFanju(Base):# 核心元素# 每个番剧的追番人数元素xpathel_xinFanNumber = ("xpath", '//*[@class="shadow"]')# 第二页番剧的按钮元素xpathel_xinFan_NextButton = ("xpath", '//*[@class="pagelistbox clearfix"]/a[2]')# 存放两页番剧的追番人数xinFanNumber = []# 此函数为正则匹配追番人数的数量def get_zhuifan_num(self, name_list):result = []pattern = repile(r'(\d+(\.\d+)?)(万)?[追番 | 追剧 ]')for item in name_list:match = pattern.search(item)if match:num_str = match.group(1)if match.group(3):num = float(num_str) * 10000else:num = int(num_str)result.append(num)else:result.append(None)return result# 核心业务# 获取b站2022追番页面的1、2页追番人数def GetXinFanInfor01(self):# 切换当前页面self.switch()# 获取第一页番剧的追番人数temp = self.locators(self.el_xinFanNumber)for i in range(len(temp)):self.xinFanNumber.append(temp[i].text)# 找到番剧的第二页按钮,点击切换到第二页self.locator(self.el_xinFan_NextButton).click()# 等待一段时间,让页面切换到下一页time.sleep(2)# 获取第二页番剧的追番人数temp = self.locators(self.el_xinFanNumber)for i in range(len(temp)):self.xinFanNumber.append(temp[i].text)#打印所获取到的追番人数print(self.xinFanNumber)# 判断追番人数”是否按照升序排序result = self.get_zhuifan_num(self.xinFanNumber)oringin = resultresult.sort(reverse=False)# 原始获取到的追番人数列表print('提取追番人数的列表:',oringin)# sort(reverse=False)函数升序后的追番人数列表print('追番人数列表升序后的列表:',result)print("对比上面两个列表,判断追番人数是否按照升序排序:", result == oringin)
③编写test01_case_Number_of_followers.py(任务1:运行此py文件)
代码如下:
import time
import unittest
from selenium import webdriver
from page_object.blibli_index_object01 import BlibliIndexclass TestCase_GetxinFanInfor(unittest.TestCase):@classmethoddef setUpClass(cls):# 创建浏览器cls.driver = webdriver.Chrome()# 创建b站首页cls.blibli = BlibliIndex(cls.driver)# 打开b站番剧首页cls.blibliFanJu = cls.blibli.openBlibliFanju()@classmethoddef tearDownClass(cls):# 退出浏览器cls.driver.quit()# 测试用例函数def test_OpenBliBliFanJu(self):# 执行b站番剧首页中 获取新番信息的业务self.blibliFanJu.GetXinFanInfor01()# 停留一段时间time.sleep(0.5)if __name__ == '__main__':unittest.main()
任务1运行结果图:
任务2:
①编写blibli_index_object02.py
代码如下:
# 核心业务流程# 打开b站首页# 点击番剧按钮,打开番剧页面#点击2022年的番剧页面# 点击“追番人数”升序排序按钮# #把打开的番剧页面返回出去
from base_page.base_page import Base # 导入基类---(理解:导入功能模块)
import time
from page_object.blibli_get_fanju_name_number02 import BliBliFanju02# b站首页
class BlibliIndex(Base):# urlurl = ""# 核心元素el_button = ('xpath', '//*[@id="i_cecream"]/div[2]/div[1]/div[3]/div[2]/div/div[1]/a[1]')el_button_2022 = ('xpath', '// *[ @ id = "home_v3_mod_index"] / div / div[3] / div / div / div[2] / a[1]')el_button_up = ('xpath', '// *[ @ id = "app"] / div[2] / div[1] / ul[1] / li[1] / span')# 核心业务def openBlibliFanju(self):# 打开b站首页self.open(self.url)# 等待一段时间time.sleep(1)# 点击番剧按钮,打开番剧页面self.locator(self.el_button).click()time.sleep(3)#切换到当前窗口self.switch()time.sleep(1)#点击2022年的番剧页面self.locator(self.el_button_2022).click()time.sleep(3)# 切换到当前窗口self.switch()# 点击“追番人数”升序排序按钮self.locator(self.el_button_up).click()time.sleep(2)# #把打开的番剧页面返回出去return BliBliFanju02(self.driver)
②编写blibli_get_fanju_name_number02.py
代码如下:
import time
from page_object.blibli_xinfan_object02 import BliBliXinFan02
from base_page.base_page import Base# b站番剧首页
class BliBliFanju02(Base):# 核心元素# 每个番剧的番剧名el_xinFanName = ("xpath", '//*[@class="bangumi-title"]')# 每个番剧的集数el_xinFan_ji_Number = ("xpath", '//*[@class="pub-info"]')# 每个番剧的链接el_xinFanUrl = ("xpath", '//*[@class="cover-wrapper"]')# 新番区域下一页的按钮el_xinFan_NextButton = ("xpath", '//*[@class="pagelistbox clearfix"]/a[2]')# 存放两页番剧的追番人数xinFanNumber = []# 存放两页番剧的番名xinFanName = []# 存放两页番剧对应的集数xinFan_ji_Number = []# 存放两页番剧的链接xinFanUrls = []# # 存放所有新番的页面对象xinFanPages = []# 核心业务# 获取两页的番剧的番名+集数,并测试2022番剧页面 与 每一个番剧的页面中的番名+集数,是否一致def GetXinFanInfor(self):# 切换当前页面self.switch()try:# 获取第一页番剧的番剧名temp = self.locators(self.el_xinFanName)for i in range(len(temp)):self.xinFanName.append(temp[i].text)# 获取第一页番剧对应的集数temp = self.locators(self.el_xinFan_ji_Number)for i in range(len(temp)):self.xinFan_ji_Number.append(temp[i].text)# 获取第一页的番剧链接temp = self.locators(self.el_xinFanUrl)for i in range(len(temp)):self.xinFanUrls.append(temp[i].get_attribute('href'))# 找到新番区域中的第二页按钮,点击切换到第二页self.locator(self.el_xinFan_NextButton).click()# 等待一段时间,让新番切换到下一页time.sleep(2)# 获取第二页的番剧名temp = self.locators(self.el_xinFanName)for i in range(len(temp)):self.xinFanName.append(temp[i].text)# 获取第二页番剧对应的集数temp = self.locators(self.el_xinFan_ji_Number)for i in range(len(temp)):self.xinFan_ji_Number.append(temp[i].text)# 获取第二页番剧的链接temp = self.locators(self.el_xinFanUrl)for i in range(len(temp)):self.xinFanUrls.append(temp[i].get_attribute('href'))except:print("null")#打印获取的番剧名print(self.xinFanName)# 打印获取的番剧集数print(self.xinFan_ji_Number)# 打印获取的番剧对应的url# print(self.xinFanUrls)# 根据新番数,创建相应数量的新番页面对象for url in self.xinFanUrls:# 创建新番页面对象xinFan = BliBliXinFan02(self.driver)# 给新番页面对象赋予网址urlxinFan.url = url# 把新番页面对象存放到容器中self.xinFanPages.append(xinFan)# print(self.xinFanPages)# 打开指定新番def OpenXinFan(self, index):# 获取指定的新番xinFan = self.xinFanPages[index]# print(xinFan)# 打开新番的网页self.open(xinFan.url)# 将新番的页面对象返回出去return xinFan
③编写blibli_xinfan_object02.py
代码如下:
from base_page.base_page import Base# b站新番
class BliBliXinFan02(Base):# urlurl = None# 核心元素# 新番的番名元素xpathel_xinFanName = ("xpath", '//*[@class="mediainfo_mediaTitle__lu7u_"]')# 新番的追番人数元素xpathel_xinFan_ji_Number = ("xpath", '//*[@class="mediainfo_mediaDesc__0JJwL"][2]/span[3]')# 新番的番名xinFanName = None# 新番的追番人数xinFan_ji_Number = None# 核心业务# 获取新番页的信息def GetInfor(self):# 切换到最新的页面self.switch()# 获取新番页面的番名+追番人数self.xinFanName = self.locator(self.el_xinFanName).textself.xinFan_ji_Number = self.locator(self.el_xinFan_ji_Number).text
④编写test02_case_Get_name_number.py(任务2:运行此py文件)
代码如下:
import time
import unittest
from selenium import webdriver
from page_object.blibli_index_object02 import BlibliIndexclass TestCase_GetxinFanInfor(unittest.TestCase):@classmethoddef setUpClass(cls):# 创建浏览器cls.driver = webdriver.Chrome()# 创建b站首页cls.blibli = BlibliIndex(cls.driver)# 打开b站番剧首页cls.blibliFanJu = cls.blibli.openBlibliFanju()# 获取b站番剧首页的番剧信息cls.blibliFanJu.GetXinFanInfor()@classmethoddef tearDownClass(cls):# 退出浏览器cls.driver.quit()# 测试用例函数def test_OpenBliBliFanJu(self):a = [] #存放b站番剧首页的番剧名b = [] #存放每一个番剧的页面中的番名c = [] #存放b站番剧首页的番剧集数d = [] #存放每一个番剧的页面中的集数# 循环打开所有的新番for i in range(len(self.blibliFanJu.xinFanPages)):# 打开指定的新番xinFan = self.blibliFanJu.OpenXinFan(i)# 获取当前新番的信息xinFan.GetInfor()# 停留一段时间time.sleep(1)# 去掉额外的文本和符号expected = xinFan.xinFan_ji_Number.replace("已完结, ", "").replace("·", "").strip()# 输出b站番剧首页的新番番名+集数,以及新番页面中的番名+集数print()print('b站番剧首页:', self.blibliFanJu.xinFanName[i], self.blibliFanJu.xinFan_ji_Number[i])print('新番页面 :', xinFan.xinFanName, expected)# 断言测试2022番剧页面 与 每一个番剧的页面中的番名,是否一致self.assertEqual(self.blibliFanJu.xinFanName[i],xinFan.xinFanName)if '话' in expected:# 断言测试2022番剧页面 与 每一个番剧的页面中的集数,是否一致self.assertEqual(self.blibliFanJu.xinFan_ji_Number[i],expected)a.append(self.blibliFanJu.xinFanName[i])b.append(xinFan.xinFanName)c.append(self.blibliFanJu.xinFan_ji_Number[i])d.append(expected)print(a)print(b)print(c)print(d)
if __name__ == '__main__':unittest.main()
任务2运行结果图:
任务3:
①编写blibli_index_object03.py
代码如下:
# 核心业务流程# 打开b站首页# 点击番剧按钮,打开番剧页面#点击2022年的番剧页面# #把打开的番剧页面返回出去
from base_page.base_page import Base # 导入基类---(理解:导入功能模块)
import time
from page_object.blibli_get_fanju_name_number03 import BliBliFanju03# b站首页
class BlibliIndex(Base):# urlurl = ""# 核心元素el_button = ('xpath', '//*[@id="i_cecream"]/div[2]/div[1]/div[3]/div[2]/div/div[1]/a[1]')el_button_2022 = ('xpath', '// *[ @ id = "home_v3_mod_index"] / div / div[3] / div / div / div[2] / a[1]')# 核心业务def openBlibliFanju(self):# 打开b站首页self.open(self.url)# 等待一段时间time.sleep(1)# 点击番剧按钮,打开番剧页面self.locator(self.el_button).click()time.sleep(3)#切换到当前窗口self.switch()time.sleep(1)#点击2022年的番剧页面self.locator(self.el_button_2022).click()time.sleep(2)# 切换到当前窗口self.switch()time.sleep(1)# #把打开的番剧页面返回出去return BliBliFanju03(self.driver)
②编写blibli_get_fanju_name_number03.py
代码如下:
from page_object.blibli_xinfan_object03 import BliBliXinFan03
from base_page.base_page import Base# b站番剧首页
class BliBliFanju03(Base):# 核心元素# 每个番剧的链接el_xinFanUrl = ("xpath", '//*[@class="cover-wrapper"]')# 存放当前页面番剧的链接xinFanUrls = []# # 存放所有新番的页面对象xinFanPages = []# 核心业务# 测试该番的集数 与 右侧的选集是否一致def GetXinFanInfor(self):# 切换当前页面self.switch()# 获取当前页的新番链接temp = self.locators(self.el_xinFanUrl)for i in range(len(temp)):self.xinFanUrls.append(temp[i].get_attribute('href'))# 根据新番数,创建相应数量的新番页面对象for url in self.xinFanUrls:# 创建新番页面对象xinFan = BliBliXinFan03(self.driver)# 给新番页面对象赋予网址urlxinFan.url = url# 把新番页面对象存放到容器中self.xinFanPages.append(xinFan)# 打开指定新番def OpenXinFan03(self, index):# 获取指定的新番xinFan = self.xinFanPages[index]# print(xinFan)# 打开新番的网页self.open(xinFan.url)# 将新番的页面对象返回出去return xinFan
③编写blibli_xinfan_object03.py
代码如下:
from base_page.base_page import Base# b站新番
class BliBliXinFan03(Base):# urlurl = None# 核心元素# 番剧的集数元素xpathel_xinFan_ji_Number = ("xpath", '//*[@class="mediainfo_mediaDesc__0JJwL"][2]/span[3]')# 新番右侧的选集最后一集元素xpathel_xinFan_ji_Number_right = ("xpath", '(//*[@class="numberListItem_title__ukPv0"])[last()]')# 新番的集数xinFan_ji_Number = None# 新番右侧的选集最后一集xinFan_ji_Number_right = None# 核心业务# 获取新番页的信息def GetInfor(self):# 切换到最新的页面self.switch()# 获取新番页面的集数和右侧的选集最后一集self.xinFan_ji_Number = self.locator(self.el_xinFan_ji_Number).textself.xinFan_ji_Number_right = self.locator(self.el_xinFan_ji_Number_right).text
④编写test03_case_jishu_right_jishu.py(任务3:运行此py文件)
代码如下:
import time
import re
import unittest
from selenium import webdriver
from page_object.blibli_index_object03 import BlibliIndexclass TestCase_GetxinFanInfor(unittest.TestCase):@classmethoddef setUpClass(cls):# 创建浏览器cls.driver = webdriver.Chrome()# 创建b站首页cls.blibli = BlibliIndex(cls.driver)time.sleep(1)# 打开b站番剧首页cls.blibliFanJu = cls.blibli.openBlibliFanju()time.sleep(1)# 获取b站番剧首页的新番信息cls.blibliFanJu.GetXinFanInfor()time.sleep(1)@classmethoddef tearDownClass(cls):# 退出浏览器cls.driver.quit()def extract_number(self,string):"""从字符串中提取数字"""match = re.search(r'\d+', string) # 匹配字符串中的数字if match:num = match.group() # 取出匹配结果return numelse:print("无集数")# 测试用例函数def test_OpenBliBliFanJu(self):a = [] #a存放新番首页的集数b = [] #b存放新番实际的集数# 循环打开所有的新番for i in range(len(self.blibliFanJu.xinFanPages)):# 打开指定的新番xinFan = self.blibliFanJu.OpenXinFan03(i)# 停留一段时间time.sleep(1)# 获取当前新番的信息xinFan.GetInfor()a.append(self.extract_number(xinFan.xinFan_ji_Number))b.append(xinFan.xinFan_ji_Number_right)try:self.assertEqual(self.extract_number(xinFan.xinFan_ji_Number), xinFan.xinFan_ji_Number_right)except AssertionError as e:print("第{}个测试不通过:第 {} 个新番的集数应该为 {},但实际为 {}".format(i+1,i+1,self.extract_number(xinFan.xinFan_ji_Number), xinFan.xinFan_ji_Number_right))print('存放新番首页显示的集数',a)print('存放新番实际的集数',b)if __name__ == '__main__':unittest.main()
任务3运行结果图:
任务4:
①编写blibli_index_object04.py
代码如下:
# 核心业务流程# 打开b站首页# 点击番剧按钮,打开番剧页面#点击2022年的番剧页面#点击年份为2023的番剧按钮#点击按照“最高评分”进行排序# #把打开的番剧页面返回出去
from base_page.base_page import Base # 导入基类---(理解:导入功能模块)
import time
from page_object.blibli_get_fanju_name_number04 import BliBliFanju04# b站首页
class BlibliIndex(Base):# urlurl = ""# 核心元素el_button = ('xpath', '//*[@id="i_cecream"]/div[2]/div[1]/div[3]/div[2]/div/div[1]/a[1]')el_button_2022 = ('xpath', '// *[ @ id = "home_v3_mod_index"] / div / div[3] / div / div / div[2] / a[1]')el_button_2023 = ('xpath', '//*[@id="app"]/div[2]/div[2]/div[2]/div[8]/ul/li[2]')el_button_score_up = ('xpath', '//*[@id="app"]/div[2]/div[1]/ul[1]/li[3]/span')# 核心业务def openBlibliFanju(self):# 打开b站首页self.open(self.url)# 等待一段时间time.sleep(1)# 点击番剧按钮,打开番剧页面self.locator(self.el_button).click()time.sleep(3)#切换到当前窗口self.switch()time.sleep(1)#点击2022年的番剧页面self.locator(self.el_button_2022).click()time.sleep(2)# 切换到当前窗口self.switch()time.sleep(1)#点击2023年的番剧页面self.locator(self.el_button_2023).click()time.sleep(2)# 切换到当前窗口self.switch()#点击按照“最高评分”进行排序self.locator(self.el_button_score_up).click()time.sleep(1)# #把打开的番剧页面返回出去return BliBliFanju04(self.driver)
②编写blibli_get_fanju_name_number04.py
代码如下:
import re
from base_page.base_page import Base# b站番剧首页
class BliBliFanju04(Base):# 核心元素# 每个番剧的评分元素xpathel_xinFan_score = ("xpath", '//*[@class="shadow"]')# 番剧第二页按钮元素xpathel_xinFan_two_page = ("xpath", '//*[@id="app"]/div[2]/div[1]/div/a[2]')# 存放1,2页每个番剧的评分xinFan_score = []from typing import Listdef extract_scores(self, data: List[str]) -> List[float]:"""从包含评分字符串的列表中提取所有评分,并返回一个包含所有评分的列表。"""pattern = r'(\d+\.\d+)分'scores = []for item in data:match = re.search(pattern, item)if match:score = float(match.group(1))scores.append(score)return scores# 核心业务# 测试评分排序是否正确def GetXinFanInfor04(self):# 切换当前页面self.switch()# 获取第1页的番剧评分temp = self.locators(self.el_xinFan_score)for i in range(len(temp)):self.xinFan_score.append(temp[i].text)# 点击第二页按钮进入第二页self.el_xinFan_two_page = self.locator(self.el_xinFan_two_page).click# 获取第2页的番剧评分temp = self.locators(self.el_xinFan_score)for i in range(len(temp)):self.xinFan_score.append(temp[i].text)print(self.xinFan_score)self.result = self.extract_scores(self.xinFan_score)self.original = self.resultprint('获取得到的列表', self.original)# 手动按最高评分排序self.result.sort(reverse=True)print('手动按最高评分排序后的列表', self.result)print('测试评分排序是否正确:', self.original == self.result)
③编写test04_case_score.py(任务4:运行此py文件)
代码如下:
import unittest
from selenium import webdriver
from page_object.blibli_index_object04 import BlibliIndexclass TestCase_OpenBliBliFanJu(unittest.TestCase):@classmethoddef setUpClass(cls):# 创建浏览器cls.driver = webdriver.Chrome()# 创建b站首页cls.blibli = BlibliIndex(cls.driver)# 执行b站首页打开番剧页面的业务cls.blibliFanJu = cls.blibli.openBlibliFanju()@classmethoddef tearDownClass(cls):# 退出浏览器cls.driver.quit()# 测试用例函数def test_OpenBliBliFanJu(self):# 执行b站番剧首页中 获取新番信息的业务self.blibliFanJu.GetXinFanInfor04()if __name__ == '__main__':unittest.main()
任务4运行结果图:
任务5:
①编写blibli_index_object05.py
代码如下:
# 核心业务流程# 打开b站首页# 点击番剧按钮,打开番剧页面# #把打开的番剧页面返回出去
from base_page.base_page import Base # 导入基类---(理解:导入功能模块)
import time
from page_object.blibli_get_fanju_name_number05 import BliBliFanju# b站首页
class BlibliIndex(Base):# urlurl = ""# 核心元素el_button = ('xpath', '//*[@id="i_cecream"]/div[2]/div[1]/div[3]/div[2]/div/div[1]/a[1]')# 核心业务def openBlibliFanju(self):# 打开b站首页self.open(self.url)# 等待一段时间time.sleep(1)# 点击番剧按钮,打开番剧页面self.locator(self.el_button).click()time.sleep(3)# #把打开的番剧页面返回出去return BliBliFanju(self.driver)
②编写blibli_get_fanju_name_number05.py
代码如下:
import time
from base_page.base_page import Base
# b站番剧首页
class BliBliFanju(Base):# 核心元素# 推荐番剧下面的名称el_xinFan_down = ("xpath", '//*[@class="season-cover-title"]')# 推荐番剧上面的名称el_xinFan_up = ("xpath", '//*[@class="hover-title"]')# 存放两页番剧的追番人数xinFan_down = []xinFan_up = []# 核心业务# 获取“番剧首页”的页面上方推荐番剧两个区域的番剧名称def GetXinFanInfor05(self):# 切换当前页面self.switch()# 获取“番剧首页”的页面上方推荐番剧下区域的番剧名称temp = self.locators(self.el_xinFan_down)for i in range(len(temp)):self.xinFan_down.append(temp[i].text)# 获取“番剧首页”的页面上方推荐番剧上区域的番剧名称from selenium.webdrivermon.action_chains import ActionChainsself.actions = ActionChains(self.driver)self.actions.move_to_element(temp[i]).perform()# 注意:要给获取第5和第6个番剧名称的时间设置长些,否则获取不到对应的名称if i == 5 or i == 6:time.sleep(3)self.xinFan_up.append(self.locator(self.el_xinFan_up).text)# 测试番剧名称是否一致print("第{}个测试番剧名称是否一致:{}".format(i, temp[i].text == self.locator(self.el_xinFan_up).text))time.sleep(0.5)print(self.xinFan_down)print(self.xinFan_up)
③编写test05_case.py(任务5:运行此py文件)
代码如下:
import time
import unittest
from selenium import webdriver
from page_object.blibli_index_object05 import BlibliIndexclass TestCase_OpenBliBliFanJu(unittest.TestCase):@classmethoddef setUpClass(cls):# 创建浏览器cls.driver = webdriver.Chrome()# 创建b站首页cls.blibli = BlibliIndex(cls.driver)# 执行b站首页打开番剧页面的业务cls.blibliFanJu = cls.blibli.openBlibliFanju()@classmethoddef tearDownClass(cls):# 退出浏览器cls.driver.quit()# 测试用例函数def test_OpenBliBliFanJu(self):# 执行b站番剧首页中 获取新番信息的业务self.blibliFanJu.GetXinFanInfor05()time.sleep(3)if __name__ == '__main__':unittest.main()
任务5运行结果图:
任务完成啦!各位大佬,代码哪里需要完善,请多多指教。
I appreciate your support.
本文标签: 智能化软件测试
版权声明:本文标题:智能化软件测试 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1730810494a1521403.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论