class ToolBarPanelPage(Base): def __init__(self, driver): self.base = Base(driver) self.home = HomePage(driver) # 点击底部工具栏的位置 def clickToolsPanel(self, element): ''' :param element: 元素名称 :return: ''' if self.base.elementIsExit(element): self.base.clickByElement(element, "工具面板-》{}".format(element)) else: self.base.assertFalse(element) # 点击我的图标 ---wmw def clickFlymeme(self): if self.base.elementIsExit(SET_UP): self.base.clickByElement(FLYME_ME, '我的图标') else: self.assertFalse(SET_UP) # 点击设置 --wmw def clickSetUp(self): if self.base.elementIsExit(SET_UP): self.base.clickByElement(SET_UP, "设置") else: self.assertFalse(SET_UP) # 清空历史 —— LJX def cleanHistory(self): self.home.clickMore() self.clickToolsPanel(CLEAN_UP_HISTORY) self.clickToolsPanel(CLEAN_UP)
class TestSharePage(): @pytest.fixture(scope="function") def share_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.more = MorePage(self.driver) self.share = SharePage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("") @allure.story('测试分享网页到便签') @pytest.mark.P0 def test001ShareWebPage(self, share_init): ''' 1、进入浏览器,点击导航网站-》安居客 2、在安居客网页中点击底部-》工具栏图标按钮 3、点击底部工具栏-》点击分享按钮 4、点击分享面板-》便签按钮到便签 5、断言便签应用中是否存在分享的内容 ''' self.more.clickDaoHang(HOME_ANJUKE) self.home.clickMore() self.share.clickWebPageShare() self.share.clickNotes() self.base.assertTrue(SHARE_TEXTTITLE) @allure.story('测试分享资讯文章到便签') @pytest.mark.P0 def test002ShareNewsPage(self, share_init): ''' 1、进入浏览器,点击"资讯"按钮 2、在资讯流列表点击“倒三角”,进入频道管理页面 3、打开“健康”频道 4、打开资讯文章详情页 5、点击分享按钮 6、点击分享面板-》便签按钮到便签 7、断言便签应用中是否存在分享的内容 8、点击mback返回资讯流列表 9、断言资讯流列表“资讯”按钮存在 ''' self.home.clickInformation() self.news.clickNewsTriangle() self.news.clickNewsChannel(NEWS_CHANNEL_HEALTH) self.news.clickOpenNewsArticle() self.base.assertTrue(NEWS_PAGE_MOREMENU) self.share.clickNewsArticleShare() self.share.clickNotes() self.base.assertTrue(SHARE_TEXT)
def readPage_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.read = ReadPage(self.driver) self.searchpanel = SearchPanelPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.clearApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) yield logging.info("****用例执行结束****") logging.info("")
def search_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.searchpanel = SearchPanelPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("")
def personalCenter_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod= PubMethod(self.driver) self.toolbarpanel = ToolBarPanelPage(self.driver) self.personalcenter = PersonalCenterPage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("")
def news_init(self, scope="function"): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.more = MorePage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("")
def quit_init(self, scope="function"): self.base = Base(self.driver) self.more = MorePage(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.windowstab = WindowsTabPage(self.driver) self.quit = ToolBarPanelPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("")
def setUp_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.searchpanel = SearchPanelPage(self.driver) self.toolbarpanel = ToolBarPanelPage(self.driver) self.setup = SetUpPage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.base.browserWatcher() self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("")
def collectionAndHistory_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.negativescreen = NegativeScreenPage(self.driver) self.addtohome = AddToHomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.searchpanel = SearchPanelPage(self.driver) self.toolbarpanel = ToolBarPanelPage(self.driver) self.collectionandhistory = CollectionAndHistoryPage(self.driver) self.news = NewsPage(self.driver) self.windowstab = WindowsTabPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("")
def down_init(self, scope="function"): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.more = MorePage(self.driver) self.search = SearchPanelPage(self.driver) self.tool = ToolBarPanelPage(self.driver) self.set = SetUpPage(self.driver) self.down = DownPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("")
class TestNewsPage(): @pytest.fixture() def news_init(self, scope="function"): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.more = MorePage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("") @allure.story('测试下拉刷新、上滑刷新、点击资讯按钮刷新、点击提示语刷新资讯流列表,更新资讯内容') def test001RefreshNews(self, news_init): ''' 1、打开浏览器,在首页点击“资讯”按钮进入资讯流列表 2、获取资讯流列表的文章标题 3、下拉刷新资讯流列表内容,再次获取资讯流列表的文章标题 4、断言刷新前和刷新后的文章标题不一样 5、滑动页面找到'上次看到这里,点击刷新'提示语,点击提示语,刷新资讯流内容 6、断言刷新前和刷新后的文章标题不一样 7、上滑刷新,刷新新的资讯文章 8、断言刷新前的文章内容标题不存在 ''' self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) self.home.clickInformation() beforeArticleTitle = self.news.getNewsArticleTitle() self.news.dropScrollNews() sleep(2) afterArticleTitle = self.news.getNewsArticleTitle() self.base.assertEqual(beforeArticleTitle, afterArticleTitle, False) self.news.scrollUpNewsToElement() self.news.clickNewsRefreshNotice() sleep(2) afterRefreshArticleTitle = self.news.getNewsArticleTitle() self.base.assertEqual(afterArticleTitle, afterRefreshArticleTitle, False) self.news.scrollUpNews(2) afterToArticleTitle = self.news.getNewsArticleTitle() self.base.assertEqual(afterRefreshArticleTitle, afterToArticleTitle, False) @allure.story('测试美女频道,打开标签列表、打开图片详情') def test002NewsBeautyGrilChannel(self, news_init): ''' 1、打开浏览器,在首页向上滑动进入资讯流列表 2、点击资讯流列表的三角符号,进入频道管理页面 3、点击“美女”,进入“美女”频道列表 4、断言“美女图集”存在,则打开美女频道正常 5、再点击打开“女神”标签,进入标签列表页中 6、断言“女神”标签中“图集详情的内容ID”存在 7、点击mback返回美女列表页 8、滑动页面,选择美女图片打开进入美女图片详情 9、断言图片详情页顶部返回按钮存在 ''' self.home.clickInformation() self.news.clickNewsTriangle() self.news.clickNewsChannel(NEWS_CHANNEL_BEAUTY_GIRL) self.base.assertTrue(NEWS_BEAUTY_GIRL_ATLAS) self.news.clickBeautyGirlLable(NEWS_BEAUTY_GIRL_LABEL) self.base.assertTrue(NEWS_BEAUTY_GIRL_GODDESS) self.pubmethod.clickBack() self.news.scrollUpNews(1) self.news.clickBeautyGirlList() self.base.assertTrue(NEWS_BEAUTY_GIRL_BACK) @allure.story('测试频道管理页面,新增、删除、长按、点击打开频道跳转正常等操作') def test003NewsChannelManage(self, news_init): ''' 1、打开浏览器,上滑进入资讯流列表 2、点击倒三角符号,进入频道管理页面 3、在我的频道管理页面,长按“头条” 4、删除“视频、军事”频道 5、点击“完成”按钮 6、再添加“视频、军事”频道 7、点击“视频”频道,进入资讯流列表 8、断言视频频道列表中的负反馈按钮存在 ''' self.pubmethod.clearApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.clickPrivacyAgree() self.pubmethod.clickPermissionAgree() self.base.browserWatcher() sleep(4) self.home.clickInformation() self.news.clickNewsTriangle() self.news.longPressNewsChannel(NEWS_CHANNEL_TOUTIAO) self.news.clickDeleteNewsChannel(NEWS_CHANNEL_DELETE, 2) self.news.clickFinishButton() self.news.addNewsChannel(NEWS_CHANNEL_VIDEO) self.news.addNewsChannel(NEWS_CHANNEL_MILITARY) self.news.clickNewsChannel(NEWS_CHANNEL_VIDEO) self.base.assertTrue(NEWS_VIDEO_NO_INTERESTED) @allure.story('测试资讯流列表中的不感兴趣功能') def test004NewsChannelManage(self, news_init): """ 1、打开浏览器,上滑进入资讯流列表页面 2、获取资讯流列表第一个标题 3、点击“X”按钮,显示不感兴趣弹框 4、点击“不感兴趣”,删除文章 5、断言删除前和删除后的文章标题不相等 """ self.home.clickInformation() beforeArticleTitle = self.news.getNewsArticleTitle() self.news.clickDeleteNewsChannel(NEWS_ARTICLE_DELETE, 1) self.news.clickDeleteNewsChannel(NEWS_DISLIKE, 1) afterArticleTitle = self.news.getNewsArticleTitle() self.base.assertEqual(beforeArticleTitle, afterArticleTitle, False) @allure.story('测试下拉刷新资讯流列表,更新资讯内容,打开任意文章,文章加载正常') def test005RefreshNewsOpenArticle(self, news_init): ''' 1、打开浏览器,在首页点击“资讯”按钮进入资讯流列表 2、点击“倒三角”进入频道管理页面 3、点击“健康”频道打开,进入资讯流列表 4、下拉刷新资讯流列表内容 4、获取列表中的文章标题文字信息 5、点击打开资讯流列表的资讯文章详情 6、根据百度文字识别 API 识别并获取图片中文字 7、断言文章标题和文章详情页的文字的匹配度 ''' self.home.clickInformation() self.news.clickNewsTriangle() self.news.clickNewsChannel(NEWS_CHANNEL_HEALTH) self.news.clickOpenNewsArticle() self.pubmethod.clickBack() self.news.dropScrollNews() beforetitle = self.news.getNewsArticleTitle() self.news.clickOpenNewsArticle() aftertitle = self.pubmethod.getBaiduApiText(NEWS_PAGE_MOREMENU) self.base.assertEqual(beforetitle, aftertitle, True) # ---wmw @allure.story('测试资讯广告') def test006NewsAdvertisement(self, news_init): ''' 1、点击资讯按钮进入资讯流列表,并刷新资讯 2、上滑页面,点击X按钮,删除广告,并断言是否存在 ''' self.pubmethod.clearApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.clickPrivacyAgree() self.pubmethod.clickPermissionAgree() self.base.browserWatcher() sleep(4) # 点击资讯按钮进入资讯流列表 self.home.clickInformation() # 点击“倒三角”进入频道管理页面 self.news.clickNewsTriangle() # 点击“视频”频道打开,进入资讯流列表 self.news.clickNewsChannel(NEWS_CHANNEL_VIDEO) # 上滑页面 self.news.SlideUp() sleep(2) # 点击 X 按钮,删除广告 self.news.clickNewsAdvertisementDelete() # 点击不感兴趣 self.news.clickNewsAdvertisementUninterested() sleep(4) # 断言页面是否存在广告 self.base.assertTrue(NEWS_ADVERTISEMENT, False)
class TestWindowsTabPage(): @pytest.fixture() def window_init(self, scope="function"): self.base = Base(self.driver) self.more = MorePage(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.windowstab = WindowsTabPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("") # 新建多窗口且浏览多窗口内容,打开多窗口页面 ——LCM @allure.story('测试新建多窗口且浏览多窗口内容') def test001NewWindowsTab(self, window_init): ''' 1、进入浏览器,点击导航网站-》更多 2、点击多窗口按钮 3、点击新建多窗口按钮(新建3个多窗口tab) 4、滑动浏览多窗口tab页 5、断言首页导航网站-》更多 -》搜索框中的默认关键字:输入关键字 6、点击多窗口中tab页进入网页浏览 7、断言多窗口数量不相等 ''' self.more.clickDaoHang(HOME_BUSINESS_MORE_TEXT) winNumBefore = self.windowstab.getWindowsNum() self.windowstab.clickWindowsTab() self.windowstab.newWindowsTab(2) self.windowstab.scrollToWindowsTab() self.windowstab.openWindowsTabPage() self.base.assertTrue(DEFAULT_WORD) NumAfter = self.windowstab.getWindowsNum() self.base.assertEqual(winNumBefore, NumAfter, False) # 关闭所有的多窗口 ——LCM @allure.story('测试多窗口浏览tab页关闭所有的多窗口') def test002CloseAllWindowsTab(self, window_init): ''' 1、进入浏览器,点击导航网站-》更多 2、点击多窗口按钮 3、点击新建多窗口按钮,点击打开导航网站-》更多,新建3个多窗口 4、关闭所有的多窗口 5、断言多窗口数量为:1 ''' self.more.clickDaoHang(HOME_BUSINESS_MORE_TEXT) self.windowstab.clickWindowsTab() self.windowstab.newWindowsTab(2) # 获取新建的多窗口数量 winNumBefore = self.windowstab.getWindowsNum() self.windowstab.closeAllWindowsTab() # 获取删除多窗口后的数量 NumAfter = self.windowstab.getWindowsNum() # 断言多窗口数量为:1 self.base.assertEqual(winNumBefore, NumAfter, False) # 多窗口浏览tab页上滑关闭多窗口 ——LCM @allure.story('测试多窗口浏览tab页上滑关闭一个多窗口') def test003CloseOneWindowsTab(self, window_init): ''' 1、进入浏览器,点击导航网站-》更多 2、点击多窗口按钮 3、点击新建多窗口按钮,点击打开导航网站-》更多,重复新建3个多窗口 4、获取新建的多窗口数量 5、上滑关闭2个多窗口 6、获取删除多窗口后的数量 7、断言多窗口数量是否减少 ''' self.more.clickDaoHang(HOME_BUSINESS_MORE_TEXT) self.windowstab.clickWindowsTab() self.windowstab.newWindowsTab(2) winNumBefore = self.windowstab.getWindowsNum() self.windowstab.closeOneWindowsTab() self.windowstab.openWindowsTabPage() NumAfter = self.windowstab.getWindowsNum() # 断言新建多窗口时的数量和删除多窗口后的数量 self.base.assertEqual(winNumBefore, NumAfter, False) # 长按menu_more按钮,关闭多窗口 ——LCM @allure.story('测试长按menu_more按钮,点击“X”关闭多窗口') def test004LongPressCloseWindowsTab(self, window_init): ''' 1、进入浏览器,点击导航网站-》更多 2、点击多窗口按钮 3、点击新建多窗口按钮,点击打开导航网站-》更多,重复新建3个多窗口 4、点击多窗口中tab页进入网页浏览 5、获取新建的多窗口数量 6、长按并且上滑到 “X” 位置后放开,关闭当前窗口 7、获取删除多窗口后的数量 8、断言多窗口数量是否减少 ''' self.more.clickDaoHang(HOME_BUSINESS_MORE_TEXT) self.windowstab.clickWindowsTab() self.windowstab.newWindowsTab(2) self.windowstab.openWindowsTabPage() winNumBefore = self.windowstab.getWindowsNum() # 点击长按menu_more按钮后,上滑到显示的“X”按钮,放开删除当前窗口 self.windowstab.longPressCloseWindowsTab() NumAfter = self.windowstab.getWindowsNum() # 断言新建多窗口时的数量和删除多窗口后的数量 self.base.assertEqual(winNumBefore, NumAfter, False)
class TestPersonalCenterPage(): @pytest.fixture(scope="function") def personalCenter_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod= PubMethod(self.driver) self.toolbarpanel = ToolBarPanelPage(self.driver) self.personalcenter = PersonalCenterPage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("") # ---wmw @allure.story('测试个人中心账号登录页') def test001PersonalCenterPage(self, personalCenter_init): ''' 1、点击工具菜单 2、点击工具面板--我的图标 3、未登录时,点击我的图标 4、断言页面是否为登录账号页面 ''' self.home.clickMore() self.toolbarpanel.clickFlymeme() self.personalcenter.clickFlymemeB() self.base.assertTrue(PERSONAL_CENTER_REGISTER) # ---wmw @allure.story('测试个人中心账号,进入评论详情,检查页面显示是否正常') def test002PersonalCenterPage(self, personalCenter_init): ''' 1、点击工具菜单 2、点击工具面板--我的图标 3、判断账号是否登陆 4、点击我的消息 5、默认点击第一条消息 ''' self.home.clickMore() self.toolbarpanel.clickFlymeme() self.personalcenter.elementIsLandFlymeme() self.personalcenter.clickMyMessages() self.personalcenter.clickPraisedMyMessages() afterMessagesTxt = self.pubmethod.getBaiduApiText(PERSONAL_CENTER_COMMENT_DETAILS) self.personalcenter.clickCommentary() beforeMessagesTxt = self.pubmethod.getBaiduApiText(NEWS_PAGE_MOREMENU) self.base.assertEqual(afterMessagesTxt, beforeMessagesTxt, True) @allure.story('测试个人中心账号,进入评论详情,检查页面显示是否正常') def test003PersonalCenterPage(self, personalCenter_init): ''' 1、点击工具菜单 2、点击工具面板--我的图标 3、判断账号是否登陆 4、点击我的评论 5、默认点击第一条消息 ''' self.home.clickMore() self.toolbarpanel.clickFlymeme() self.personalcenter.elementIsLandFlymeme() self.personalcenter.clickMyComment() afterCommentTxt = self.pubmethod.getBaiduApiText(PERSONAL_CENTER_MY_COMMENT_A) self.personalcenter.clickPraisedMyComment() beforeCommentTxt = self.pubmethod.getBaiduApiText(NEWS_PAGE_MOREMENU) self.base.assertEqual(afterCommentTxt, beforeCommentTxt, True) @allure.story('测试小游戏是否正常打开') def test004PersonalCenterPage(self,personalCenter_init): ''' 1、点击工具栏面板头像图标,进入个人中心 2、点击小游戏 ''' self.home.clickMore() self.toolbarpanel.clickFlymeme() self.personalcenter.clickMiniGame() self.base.browserWatcher() self.pubmethod.clearApp(HOT_GAME) @allure.story('测试资讯文章评论是否提交正常') def test005RefreshNewsOpenArticle(self,personalCenter_init): ''' 1、清除浏览器数据,进入军事频道 2、点击第一篇文章进入文章详情页,点击评论输入内容 3、断言页面是否存在输入内容 4、在个人中心评论页面删除之前输入的测试评论内容,断言测试评论不存在 ''' self.pubmethod.clearApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) # 清除数据后首次进入浏览器,点击隐私弹窗同意按钮 self.pubmethod.clickPrivacyAgree() # 点击权限弹窗“始终允许”按钮,进入浏览器 # self.pubmethod.clickPermissionAgree() self.base.browserWatcher() sleep(5) self.home.clickInformation() # 点击“倒三角”进入频道管理页面 self.news.clickNewsTriangle() sleep(2) # 点击“星座”频道打开,进入资讯流列表 self.news.clickNewsChannel(NEWS_CHANNEL_CONSTELLATION) self.news.dropScrollNews() self.news.clickOpenNewsArticle() self.base.scrollToElement(NEWS_ALL_COMMENTS) self.news.clickCommentBox() self.news.inputFocalPositionText() self.news.clickRelease() self.base.assertTrue(NEWS_INPUT_COMMENTS) sleep(4) # 点击mback self.pubmethod.clickBack() self.home.clickMore() self.toolbarpanel.clickFlymeme() self.personalcenter.clickMyComment() self.personalcenter.clickDelete() self.personalcenter.clickDeleteBox() self.pubmethod.clickBack() self.personalcenter.clickMyComment() self.base.assertTrue(NEWS_INPUT_COMMENTS, False) @allure.story('测试修改输入法') def test006PersonalCenterPage(self, personalCenter_init): ''' 1、修改输入法 ''' # 点击mback self.pubmethod.clickBack() self.pubmethod.startApp(MEIZU_SETTINGS) self.base.scrollToElement(LANGUAGE_AND_TIME) sleep(5) self.personalcenter.clickLanguageAndTime() self.personalcenter.clickInputMethod() self.personalcenter.clickSettingButton() self.personalcenter.clickSouGou() self.base.assertTrue(INPUT_BABIT) @allure.story('测试退出账号') def test007PersonalCenterPage(self, personalCenter_init): ''' 1、退出Flyme账号 ''' self.home.clickMore() self.toolbarpanel.clickFlymeme() self.personalcenter.clickOutAccount() self.base.assertTrue(PERSONAL_CENTER_NOT_LOGGED_IN)
def __init__(self, driver): self.base = Base(driver) self.home = HomePage(driver)
class TestReadPage(): @pytest.fixture(scope="function") def readPage_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.read = ReadPage(self.driver) self.searchpanel = SearchPanelPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.clearApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) yield logging.info("****用例执行结束****") logging.info("") @allure.story('测试阅读模式') def test001ReadPage(self, readPage_init): ''' 1、清空浏览器数据,点击电脑版进入小说网页 2、点击小说封面,开始阅读,进入章节,判断是否首次弹出阅读模式弹框 3、点击地址栏的阅读模式按钮,判断是否正常进入/退出阅读模式 ''' self.pubmethod.clearApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.clickPrivacyAgree() # self.pubmethod.clickPermissionAgree() sleep(4) self.base.browserWatcher() # 点击主页工具菜单 self.home.clickMore() # 点击电脑版 self.read.clickComputerButton() # 点击首页搜索框 self.home.clickHomeSearch() # 搜索框输入m.80txt.la self.searchpanel.inputNumber() # 点击搜索 self.searchpanel.clickSearchInto() # 点击小说封面 self.read.clickBook() # 点击开始阅读 self.read.clickRead() # 点击章节 self.read.clickChapter() # 断言是否会弹出阅读模式提示框 self.base.assertTrue(READ_IMG) # 点击允许 self.read.clickOpen() sleep(2) self.read.clickReadButton() # 断言是否进入阅读模式 self.base.assertTrue(READ_IMG,False) # 点击地址栏阅读模式按钮,退出阅读模式 self.read.clickReadButton() # 断言点击地址栏阅读模式按钮,是否正常退出阅读模式 self.base.assertTrue(READ_NEXT) # 点击地址栏阅读模式按钮,进入阅读模式 self.read.clickReadButton() # 断言点击地址栏阅读模式按钮,是否正常进入阅读模式 self.base.assertTrue(READ_NEXT,False)
class TestDownPage(): @pytest.fixture() def down_init(self, scope="function"): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.more = MorePage(self.driver) self.search = SearchPanelPage(self.driver) self.tool = ToolBarPanelPage(self.driver) self.set = SetUpPage(self.driver) self.down = DownPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("") @allure.story('测试长按网页链接,点击“下载链接”,显示下载弹框,点击取消') def test001DownWebPage(self, down_init): ''' 1、打开浏览器,点击底部工具栏菜单menu_more按钮 2、点击“设置”进入设置页面 3、设置搜索引擎为“360” 4、mback返回上一级页面(首页) 5、点击“搜索框”,点击“搜索”按钮,访问网页,在页面内等待2秒 6、长按网页链接,显示长按菜单弹框 7、点击“下载链接”按钮,显示下载弹框 8、断言“下载弹框”中的名称 9、获取下载弹框中的标题 10、点击下载弹框中的“取消”按钮 11、断言显示“下载弹框”的元素不存在 ''' self.home.clickMore() self.tool.clickToolsPanel(SET_UP) self.set.clickSearchEngine() self.set.click360() self.pubmethod.clickBack() self.home.clickHomeSearch() self.search.clickSearchInto() sleep(2) self.down.longLink() self.down.clickDownLink() self.base.assertTrue(DOWNLOAD_NAME) title = self.down.getDownTitle(DOWNLOAD_NAME) self.down.clickCancelButton() self.base.assertTrue(title, False) @allure.story('测试长按网页链接下载,断言下载完成后的小红点') def test002DownWebPage(self, down_init): ''' 1、点击“搜索框” 2、点击“搜索”按钮,访问网页,在页面内等待2秒 3、长按网页链接,显示长按菜单弹框 4、点击“下载链接”按钮,显示下载弹框 5、在下载弹框中点击“下载”按钮 6、点击底部工具栏菜单menu_more按钮,显示工具面板,等待5秒 6、断言工具面板中下载完成后的“小红点” ''' self.home.clickHomeSearch() self.search.clickSearchInto() sleep(2) self.down.longLink() self.down.clickDownLink() self.down.clickDownButton() self.home.clickMore() sleep(5) self.base.assertTrue(HOME_MORE_TIP) @allure.story('测试长按网页链接下载,下载完成后,断言下载管理中下载的文件存在') def test003DownWebPage(self, down_init): ''' 1、点击“搜索框”, 2、点击“搜索”按钮,访问网页,在页面内等待2秒 3、长按网页链接,显示弹框,点击“下载链接”按钮,显示下载弹框 4、获取下载弹框中的标题名称 5、在下载弹框中点击“下载”按钮 6、点击底部工具栏菜单menu_more按钮,显示工具面板,等待5秒 7、点击“下载管理”打开下载页面 7、获取下载管理中下载好的文件名称标题 8、断言“下载管理”页面中的下载文件名称与之前下载中的文件名称相等 ''' self.home.clickMore() self.tool.clickToolsPanel(DOWNLOAD_MANAGER) self.down.longPressElement() # 点击全选、删除下载文件按钮 self.down.clickChoose() self.pubmethod.clickBack() self.home.clickHomeSearch() self.search.clickSearchInto() sleep(2) self.down.longLink() self.down.clickDownLink() beforeDownTitle = self.down.getDownTitle(DOWNLOAD_NAME) self.down.clickDownButton() self.home.clickMore() sleep(5) self.tool.clickToolsPanel(DOWNLOAD_MANAGER) afterDownTitle = self.down.getDownTitle(DOWN_LOAD_MANAGE_TITLE) self.base.assertEqual(beforeDownTitle, afterDownTitle, True) @allure.story('测试应用下载') def test004DownAppPage(self, down_init): ''' 1、点击“搜索框” 2、输入“QQ”,点击“搜索”按钮 3、点击页面中的“高速下载” 4、显示下载弹框 5、在下载弹框中点击“下载”按钮 6、点击底部工具栏菜单menu_more按钮,显示工具面板 7、点击“下载管理”打开下载页面 8、断言下载中的状态 ''' self.home.clickHomeSearch() self.down.inputApp() self.search.clickSearchInto() self.down.clickAppDown() self.base.assertTrue(DOWNLOAD_NAME) self.down.clickDownButton() self.home.clickMore() self.tool.clickToolsPanel(DOWNLOAD_MANAGER) self.base.assertTrue(DOWN_LOAD_PROGRESS)
class TestSearchPanelPage(): @pytest.fixture(scope="function") def search_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.searchpanel = SearchPanelPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("") # ---wmw @allure.story('测试搜索框') def test001SearchPanelPage(self, search_init): ''' 1、点击首页搜索框 2、提取搜索框文本 3、点击搜索按钮 4、断言页面是否正常跳转到对应的搜索结果页 ''' self.home.clickHomeSearch() afterSearchText = self.searchpanel.clickSearchText() self.searchpanel.clickSearchInto() beforeSearchText = self.pubmethod.getBaiduApiText(LOCK) self.base.assertEqual(afterSearchText, beforeSearchText, True) # ---wmw @allure.story('测试历史面板热词是否正常跳转') def test002SearchPanelPage(self, search_init): ''' 1、点击首页搜索框 2、获取第一个热词文本 3、点击历史面板热词(默认第一个) 4、断言页面是否打开正确 ''' self.home.clickHomeSearch() afterOneSearchHistory = self.searchpanel.clickHotWords() self.searchpanel.clickSearchHistory() beforeOneSearchHistory = self.pubmethod.getBaiduApiText(LOCK) self.base.assertEqual(afterOneSearchHistory, beforeOneSearchHistory, True) # ---wmw @allure.story('测试换一换') def test003SearchPanelPage(self, search_init): ''' 1、点击首页搜索框 2、获取第一个搜索热词 3、点击换一换 4、断言第一个搜索热词是否不存在 ''' self.home.clickHomeSearch() panel = self.searchpanel.clickHotWords() self.searchpanel.clickAnotherChange() self.base.assertTrue(panel, False, timeout=15) @allure.story('搜索页顶部地址栏输入,选中文字') def test004SearchPanelPage(self, search_init): ''' 1、点击首页搜索框 2、点击输入框工具条前缀词“www.” 3、长按并选中地址栏中的“www.” 4、点击搜索框联想词,并打开网址 5、点击地址栏,清空地址,显示搜索历史 6.清空搜索历史 ''' # 点击首页搜索框 self.home.clickHomeSearch() # 点击输入框工具条前缀词“www.” self.searchpanel.clickInputPanelPrefixes() # 拖动输入框工具条,选中地址栏文字 self.searchpanel.swipe_InputPanel() # 点击搜索框,弹框消失 self.searchpanel.clickSearchPanel() # 点击搜索框联想词 self.searchpanel.clickAutomatedWord() # 判断是否正常打开flyme官网 self.base.assertTrue(FLYME_WEBSITE) # 点击搜索框,清空地址 self.searchpanel.clickSearchPanel() self.searchpanel.clearSearchPanel() # 判断搜索历史是否存在 self.base.assertTrue(SEARCHHISTORY) # 清空搜索历史 self.searchpanel.clearSearchHistory() self.base.assertTrue(SEARCHHISTORY, False) @allure.story('打开百度首页,滑动页面检查顶部地址栏是否高亮,点击搜索历史') def test005SearchPanelPage(self, search_init): ''' 1、点击首页搜索框,输入百度网址 2、打开百度首页,滑动页面 3、检查顶部地址栏是否展开 4、检查搜索历史,长按删除 ''' # 点击首页搜索框 self.home.clickHomeSearch() # 输入百度地址,进入百度首页 self.searchpanel.inputBaidu() self.searchpanel.clickSearchInto() # 监听地理位置弹框,点击“始终允许” self.base.browserWatcher() # 判断顶部地址栏是否展开 self.base.assertTrue(ADDRESS_CONTAINER_REFRESH) # 向上滑动页面,收起顶部地址栏 self.searchpanel.swipeBaidu() self.base.assertTrue(ADDRESS_CONTAINER_REFRESH, False) # 点击并清空地址栏,判断搜索历史是否存在 self.searchpanel.clickwebsite() self.searchpanel.clearSearchPanel() self.base.assertTrue(SEARCHHISTORY) # 长按搜索历史中的百度网址 self.searchpanel.long_clickSearchHistory() self.base.assertTrue(DELETESEARCHHISTORY) # 点击删除按钮 self.searchpanel.delete_SearchHistory() self.base.assertTrue(DELETESEARCHHISTORY, False) @allure.story('搜索框输入主题美化地址,检查外部应用跳转是否正常') def test006SearchPanelPage(self, search_init): ''' 1、点击首页搜索框,输入主题美化地址 2、弹出跳转提示,点击允许,跳转至主题美化APP ''' # 点击首页搜索框 self.home.clickHomeSearch() # 输入百度地址,进入百度首页 self.searchpanel.inputCustomize() self.searchpanel.clickSearchInto() self.searchpanel.skipCustomize() self.base.assertTrue(CUSTOMIZE) @allure.story('地址栏多次点击刷新网页,进度条和页面加载正常 —— LJX') def test007SearchPanelPage(self, search_init): ''' 1、点击首页搜索框,输入主题美化地址 2、弹出跳转提示,点击允许,跳转至主题美化APP ''' # 点击首页搜索框,点击第1个热词进入搜索结果页,并点击5次刷新按钮 self.home.clickHomeSearch() self.searchpanel.clickSearchHistory() self.searchpanel.clickMoreRefresh(ADDRESS_CONTAINER_REFRESH, 5)
class TestQuitPage(): @pytest.fixture() def quit_init(self, scope="function"): self.base = Base(self.driver) self.more = MorePage(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.windowstab = WindowsTabPage(self.driver) self.quit = ToolBarPanelPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.base.unlock() self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("") # 点击menu_more按钮,点击退出 ——LCM @allure.story('测试点击底部工具栏,点击退出按钮,再打开浏览器访问网页正常') def test001QuitOpenBrowser(self, quit_init): ''' 1、进入浏览器,点击导航网站-》安居客 2、点击多窗口 3、添加多窗口 4、点击浏览的窗口tab网页 5、点击底部工具栏的 menu_more 按钮 6、点击退出按钮 7、打开浏览器,点击导航网站-》更多 8、断言页面中的搜索框默认词 ''' self.more.clickDaoHang(HOME_ANJUKE) self.windowstab.clickWindowsTab() self.windowstab.newWindowsTab(2) self.windowstab.openWindowsTabPage() self.home.clickMore() self.quit.clickToolsPanel(OUT) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.more.clickDaoHang(HOME_BUSINESS_MORE_TEXT) # 断言进入浏览器,点击导航网站-》更多,查看页面中搜索框默认词是否存在 self.base.assertTrue(DEFAULT_WORD) # 点击menu_more按钮,点击退出 ——LCM @allure.story('测试点击底部工具栏,点击退出按钮,再打开浏览器,查看多窗口只有一个') def test002QuitOpenBrowser(self, quit_init): ''' 1、进入浏览器 2、点击导航网站-》安居客 3、点击多窗口 4、添加多窗口(新增3个多窗口) 5、点击浏览的窗口tab网页 6、点击底部工具栏的 menu_more 按钮 7、点击退出按钮 8、打开浏览器 9、断言多窗口数量不相等 ''' self.more.clickDaoHang(HOME_ANJUKE) self.windowstab.clickWindowsTab() self.windowstab.newWindowsTab(2) self.windowstab.openWindowsTabPage() winNumBefore = self.windowstab.getWindowsNum() self.home.clickMore() self.quit.clickToolsPanel(OUT) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) NumAfter = self.windowstab.getWindowsNum() # 断言退出浏览器之前和打开浏览器之后的多窗口数量 self.base.assertEqual(winNumBefore, NumAfter, False)
class TestNegativePage(): @pytest.fixture(scope="function") def collectionAndHistory_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.negativescreen = NegativeScreenPage(self.driver) self.addtohome = AddToHomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.searchpanel = SearchPanelPage(self.driver) self.toolbarpanel = ToolBarPanelPage(self.driver) self.collectionandhistory = CollectionAndHistoryPage(self.driver) self.news = NewsPage(self.driver) self.windowstab = WindowsTabPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.pubmethod.mbackToHomeOrNegative() yield logging.info("****用例执行结束****") logging.info("") @allure.story('测试取消清空历史功能 —— LJX') @pytest.mark.P1 def test001CleanUpHistoryCancel(self, collectionAndHistory_init): ''' 1、先判断是否存在历史数据,不存在则造一条历史数据,存在则不处理 2、点击工具栏中more菜单,再点击工具面板的“清空历史”,清空历史的弹框选择取消 3、断言不存在“暂无历史记录”元素 ''' # 制造一条历史数据 self.collectionandhistory.makeHistory(1) # 点击工具面板的“清空历史”,弹框选择取消 self.home.clickMore() self.toolbarpanel.clickToolsPanel(CLEAN_UP_HISTORY) self.toolbarpanel.clickToolsPanel(CLEAN_UP_CANCEL) # 再次进入工具面板的“清空历史”,断言页面不存在“暂无历史数据”元素 self.home.clickMore() self.toolbarpanel.clickToolsPanel(HISTORY) self.base.assertTrue(HISTORY_PAGE, False, timeout=3) @allure.story('测试确认清空历史功能 —— LJX') @pytest.mark.P1 def test002CleanUpHistory(self, collectionAndHistory_init): ''' 1、先判断是否存在历史数据,不存在则造一条历史数据,存在则不处理 2、点击工具栏中more菜单,再点击工具面板的“清空历史”,清空历史的弹框选择确定 3、断言存在“暂无历史记录”元素 ''' # 制造一条历史数据 self.collectionandhistory.makeHistory(1) # 点击工具面板的“清空历史”,弹框选择确定 self.home.clickMore() self.toolbarpanel.clickToolsPanel(CLEAN_UP_HISTORY) self.toolbarpanel.clickToolsPanel(CLEAN_UP) # 再次进入工具面板的“清空历史”,断言页面存在“暂无历史数据”元素 self.home.clickMore() self.toolbarpanel.clickToolsPanel(HISTORY) self.base.assertTrue(HISTORY_PAGE, timeout=3) @allure.story('收藏一篇文章,收藏夹下显示该文章;取消收藏后,收藏夹下不显示该文章 —— LJX') @pytest.mark.P1 def test003CollectArticle(self, collectionAndHistory_init): ''' 1、进入资讯流的健康频道,下拉刷新,获取第1篇文章第标题,并收藏该文章,进入收藏夹获取第1条记录的标题,断言两个标题相等 2、在收藏夹点击进入第1条记录详情,取消收藏,返回到收藏夹,获取第1条记录第标题,断言标题不相等 ''' # 进入资讯流,进入频道管理选择健康频道,下拉刷新 self.home.clickInformation() self.news.clickNewsTriangle() self.news.clickNewsChannel(NEWS_CHANNEL_HEALTH) self.news.dropScrollNews() # 获取文章标题,并收藏该文章 ArticleTitle = self.news.getNewsArticleTitle() self.news.clickOpenNewsArticle() self.news.clickArticleCollectPosition() # 返回上一层,进入我的收藏 self.news.clickNewsBack() self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) # 获取我的收藏页第1条记录的标题,断言收藏的文章标题与收藏夹第1条记录的标题一致 CollectionTitle = self.collectionandhistory.getCollectionTitle() self.base.assertEqual(ArticleTitle, CollectionTitle, True) # 点击进入我的收藏第1条记录,取消收藏 self.collectionandhistory.clickCollection(COLLECTION_ID) self.news.clickArticleCollectPosition() # 返回上一层,重新进入我的收藏,获取第1条记录标题 self.news.clickNewsBack() self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) CollectionTitle = self.collectionandhistory.getCollectionTitle() # 断言取消收藏的文章标题与收藏夹第1条记录的标题不一致 self.base.assertEqual(ArticleTitle, CollectionTitle, False) @allure.story('打开网页-添加收藏-编辑-新建收藏文件夹-收藏进去-能改的都改一遍-收藏夹打开该收藏正常 —— LJX') @pytest.mark.P1 def test004CollectWebToFolder(self, collectionAndHistory_init): ''' 1、先删除"自动化测试"文件夹,点击搜索框,进入搜索面板,点击搜索,进入搜索结果页 2、添加收藏,编辑收藏文件夹,新增一个文件夹,并选择添加到该文件夹下 3、进入收藏夹该新增文件夹下,断言是否存在1条记录 ''' # 先删除“自动化测试”文件夹 # self.collectionandhistory.deleteCollectFolder() # 点击搜索面板第1个热词,进入搜索结果页 self.home.clickHomeSearch() self.searchpanel.clickSearchInto() # 添加到收藏夹,编辑位置信息,新建"自动化测试"文件夹并收藏到该文件夹下 self.home.clickMore() sleep(1) self.toolbarpanel.clickToolsPanel(ADD_COLLECTION) self.collectionandhistory.clickAddCollectFolder(COLLECT_EDIT_ID) sleep(1) try: self.collectionandhistory.clickAddCollectFolder( COLLECT_FOLDER_POSITION) except Exception as e: logging.info('忽略点击编辑过程中的报错') self.collectionandhistory.clickAddCollectFolder(NEW_FOLDER_ID) self.collectionandhistory.inputCollectFolderName() try: self.collectionandhistory.clickAddCollectFolder(NEW_FOLDER_CONFIRM) except Exception as e: logging.info('忽略新建文件夹时点击确定出现的报错') try: self.collectionandhistory.clickAddCollectFolder( COLLECT_NEW_FOLDER_NAME) except Exception as e: logging.info('忽略点击"自动化测试"文件夹的报错') self.collectionandhistory.clickAddCollectFolder( COLLECT_NEW_FOLDER_POSITION) # 编辑网页URL、网页名称为百度网页,点击"确认",收藏到收藏夹中 self.collectionandhistory.setText(ADD_COLLECT_URL, COLLECT_NAME) self.collectionandhistory.setText(ADD_COLLECT_ADDRESS, COLLECT_URL) self.collectionandhistory.clickAddCollectFolder(CONFIRM_ID) # 等待2秒,"已添加到收藏"toast消失后才能定位到其它元素 sleep(2) # 进入收藏夹新建的"自动化测试"文件夹,断言是否存在"百度一下" self.home.clickMore() sleep(1) self.toolbarpanel.clickToolsPanel(MY_COLLECTION) self.collectionandhistory.clickCollection(COLLECT_NEW_FOLDER_NAME) self.base.assertTrue(COLLECT_NAME) # 点击进入"百度一下",监听地理位置弹框,断言存在'百度一下,你就知道' self.collectionandhistory.clickCollection(COLLECT_NAME) self.base.browserWatcher() sleep(2) self.base.assertTrue(BAIDU_HOME) @allure.story('添加一个网页到收藏/主页常用/桌面,查看是否添加到对应目录下并且点击能正常打开 —— LJX') @pytest.mark.P1 def test005CollectWebPage(self, collectionAndHistory_init): ''' 1、点击搜索框,进入搜索面板,获取第1个热词文本,点击第1个热词,进入搜索结果页 2、添加到收藏夹,进入收藏夹获取第1条记录文本,断言是否刚添加收藏夹的热词 3、添加到主页常用,进入负一屏,断言当前页面是否存在刚收藏的热词元素 4、发送到桌面,退出浏览器,断言桌面是否存在刚发送到桌面到热词元素 ''' # 进入搜索面板,获取第1个热词文本,并进入该热词的搜索结果页 self.home.clickHomeSearch() hotSearchWord = self.searchpanel.clickHotWords() self.searchpanel.clickSearchHistory() # 添加到收藏夹 self.home.clickMore() sleep(1) self.toolbarpanel.clickToolsPanel(ADD_COLLECTION) self.collectionandhistory.clickAddCollectFolder(ADD_TO_COLLECTION) # 等待2秒,"已添加到收藏"toast提示消失后才能定位到其它元素 sleep(2) # 进入收藏夹新建的文件夹下,断言是否存在数据 self.home.clickMore() sleep(1) self.toolbarpanel.clickToolsPanel(MY_COLLECTION) # 获取我的收藏页第1条记录的标题 CollectionTitle = self.collectionandhistory.getCollectionTitle() self.base.assertEqual(hotSearchWord, CollectionTitle, True) # 返回上一层,重新添加收藏-》添加到主页常用 self.collectionandhistory.clickAddCollectFolder(COLLECTION_BACK_ID) self.home.clickMore() sleep(1) self.toolbarpanel.clickToolsPanel(ADD_COLLECTION) self.collectionandhistory.clickAddCollectFolder(ADD_TO_NEGATIVE) # 等待2秒,"已添加到主页常用"toast提示消失后才能定位到其它元素 self.home.clickHome() # 进入负一屏,断言是否存在添加到搜索热词 self.home.clickHomeOnPage(MYCOLLECTION) self.base.assertTrue(hotSearchWord, True, timeout=3) # 返回上一层,重新添加收藏-》发送到桌面3次 self.pubmethod.clickBack() self.collectionandhistory.sendToDeskCollect() # 等待2秒,"已添加到主页常用"toast提示消失后才能定位到其它元素 sleep(2) self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.base.assertTrue(hotSearchWord, True, timeout=3) @allure.story('我的收藏-长按单个-删除,检查是否正常删除 —— LJX') @pytest.mark.P1 def test006DeleteCollectionOne(self, collectionAndHistory_init): ''' 1、造一条收藏记录 2、进入首页,再进入收藏夹,获取第1条记录的标题 3、长按1条记录,删除,断言被删除记录不存在 ''' # 造1条收藏记录 self.collectionandhistory.makeCollection(1) # 进入首页,再进入收藏夹 self.home.clickHomeOnPage(HOME_PAGE) self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) # 获取收藏夹第1条记录标题,然后长按删除 CollectionTitle = self.collectionandhistory.getCollectionTitle() self.collectionandhistory.longClickCollection(COLLECTION_ID) self.collectionandhistory.clickCollectDelete() self.collectionandhistory.clickCollection(FRAME_DELETE_ID) # 断言当前页面不存在已删除到收藏记录 self.base.assertTrue(CollectionTitle, False, timeout=3) @allure.story('我的收藏-长按多个-删除,检查是否正常删除 —— LJX') @pytest.mark.P1 def test007DeleteCollectionMore(self, collectionAndHistory_init): ''' 1、造3条收藏记录 2、进入首页,再进入收藏夹 3、长按3条记录,删除,断言被删除的记录不存在 ''' # 造3条收藏记录 self.collectionandhistory.makeCollection(3) # 进入首页,再进入收藏夹 self.home.clickHomeOnPage(HOME_PAGE) self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) # 获取收藏夹第1、2、3条记录的标题 CollectionTitleOne = self.collectionandhistory.getCollectionTitle(0) CollectionTitleTwo = self.collectionandhistory.getCollectionTitle(1) CollectionTitleThree = self.collectionandhistory.getCollectionTitle(2) # 删除第1、2、3条记录 self.collectionandhistory.longClickCollection(COLLECTION_ID, 3) self.collectionandhistory.clickCollectDelete() self.collectionandhistory.clickCollection(FRAME_DELETE_ID) # 断言第1、2、3条记录的标题不存在 self.base.assertTrue(CollectionTitleOne, False, timeout=3) self.base.assertTrue(CollectionTitleTwo, False, timeout=3) self.base.assertTrue(CollectionTitleThree, False, timeout=3) @allure.story('历史-长按1个-删除,检查是否正常删除 —— LJX') @pytest.mark.P1 def test008DeleteHistoryOne(self, collectionAndHistory_init): ''' 1、造一条历史记录 2、进入首页,再进入历史 3、长按1条记录,删除,断言被删除记录不存在 ''' # 制造一条历史数据 self.collectionandhistory.makeHistory(1) # 进入首页,再进入历史 self.home.clickHomeOnPage(HOME_PAGE) self.home.clickMore() self.toolbarpanel.clickToolsPanel(HISTORY) # 获取第1条记录的标题,并长按删除 HistoryTitle = self.collectionandhistory.getHistoryTitle(1) self.collectionandhistory.longClickHistory(HISTORY_ID) self.collectionandhistory.clickHistoryDelete() self.collectionandhistory.clickCollection(FRAME_DELETE_ID) # 断言当前页面不存在已删除到历史记录 self.base.assertTrue(HistoryTitle, False, timeout=3) @allure.story('历史-长按多个-删除,检查是否正常删除 —— LJX') @pytest.mark.P1 def test009DeleteHistoryMore(self, collectionAndHistory_init): ''' 1、造3条历史记录 2、进入首页,再进入历史 3、长按3条记录,删除,断言被删除的3条记录不存在 ''' # 制造3条历史数据 self.collectionandhistory.makeHistory(3) # 进入首页,再进入历史 self.home.clickHomeOnPage(HOME_PAGE) self.home.clickMore() self.toolbarpanel.clickToolsPanel(HISTORY) # 获取历史第1、2、3条记录的标题 HistoryTitleOne = self.collectionandhistory.getHistoryTitle(1) HistoryTitleTwo = self.collectionandhistory.getHistoryTitle(2) HistoryTitleThree = self.collectionandhistory.getHistoryTitle(3) # 删除第1、2、3条记录 self.collectionandhistory.longClickHistory(HISTORY_ID, 3) self.collectionandhistory.clickHistoryDelete() self.collectionandhistory.clickCollection(FRAME_DELETE_ID) # 断言第1、2、3条记录的标题不存在 self.base.assertTrue(HistoryTitleOne, False, timeout=3) self.base.assertTrue(HistoryTitleTwo, False, timeout=3) self.base.assertTrue(HistoryTitleThree, False, timeout=3) @allure.story('我的收藏-长按单个-发送至桌面,检查是否成功添加至桌面且正常打开 —— LJX') @pytest.mark.P1 def test10AddToDeskOne(self, collectionAndHistory_init): ''' 1、进入首页,再进入收藏夹 2、长按1条记录,发送到桌面3次,断言桌面存在这条记录 3、桌面点击这条记录,断言当前页面存在记录标题和工具入口 ''' self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) # 获取第1条记录的标题,长按第1条记录并发送到桌面3次 CollectionTitle = self.collectionandhistory.getCollectionTitle() self.collectionandhistory.clickCollectAddToDesk() # 退出浏览器,断言是否存在该记录 self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.base.assertTrue(CollectionTitle, True, timeout=3) # 桌面点击打开该记录,断言是否正常打开 self.base.clickByElement(CollectionTitle, '发送到桌面的收藏') self.base.assertTrue(CollectionTitle, True, timeout=3) self.base.assertTrue(HOME_MORE, True, timeout=3) @allure.story('我的收藏-长按多个-发送至桌面,检查是否成功添加至桌面且正常打开 —— LJX') @pytest.mark.P1 def test011AddToDeskMore(self, collectionAndHistory_init): ''' 1、进入首页,再进入收藏夹,长按第1、2、3条记录,发送到桌面3次,断言桌面存在这3条记录 2、桌面点击第3条记录,断言当前页面存在记录标题和工具入口 ''' self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) # 获取前3条记录的标题,长按前3条记录并发送到桌面3次 CollectionTitleOne = self.collectionandhistory.getCollectionTitle(0) CollectionTitleTwo = self.collectionandhistory.getCollectionTitle(1) CollectionTitleThree = self.collectionandhistory.getCollectionTitle(2) self.collectionandhistory.clickCollectAddToDesk(3) # 退出浏览器,断言是否存在该记录 self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.base.assertTrue(CollectionTitleOne, True, timeout=3) self.base.assertTrue(CollectionTitleTwo, True, timeout=3) self.base.assertTrue(CollectionTitleThree, True, timeout=3) # 桌面点击打开第3条记录,断言是否正常打开 self.base.clickByElement(CollectionTitleThree, '发送到桌面的收藏') self.base.assertTrue(CollectionTitleThree, True, timeout=3) self.base.assertTrue(HOME_MORE, True, timeout=3) @allure.story('我的收藏-长按1条记录-新窗口打开,检查是否正常打开且多窗口数量+1 —— LJX') @pytest.mark.P1 def test12NewWindowOpenOne(self, collectionAndHistory_init): ''' 1、进入收藏夹,长按1条记录,新窗口打开,断言正常打开且新窗口数量增加 ''' # 收藏一个网页到收藏夹 self.home.clickHomeSearch() hotSearchWord = self.searchpanel.clickHotWords() self.searchpanel.clickSearchHistory() self.home.clickMore() self.toolbarpanel.clickToolsPanel(ADD_COLLECTION) self.collectionandhistory.clickAddCollectFolder(ADD_TO_COLLECTION) # 返回上一层 self.pubmethod.clickBack() # 获取当前多窗口数量 winNumBefore = self.windowstab.getWindowsNum() self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) self.collectionandhistory.longClickCollection(COLLECTION_ID) self.collectionandhistory.clickCollectNewWindowOpen() # 新窗口打开后的窗口数量 winNumAfter = self.windowstab.getWindowsNum() self.base.assertTrue(hotSearchWord, timeout=3) self.base.assertEqual(winNumBefore, winNumAfter, False, timeout=3) @allure.story('我的收藏-长按3条记录-新窗口打开,检查是否正常打开且多窗口数量+3 —— LJX') @pytest.mark.P1 def test13NewWindowOpenMore(self, collectionAndHistory_init): ''' 1、进入收藏夹,长按多条记录,新窗口打开,断言正常打开且新窗口数量+3 ''' # 收藏一个网页到收藏夹 self.home.clickHomeSearch() hotSearchWord = self.searchpanel.clickHotWords() self.searchpanel.clickSearchHistory() self.home.clickMore() self.toolbarpanel.clickToolsPanel(ADD_COLLECTION) self.collectionandhistory.clickAddCollectFolder(ADD_TO_COLLECTION) # 返回上一层 self.pubmethod.clickBack() # 获取当前多窗口数量 winNumBefore = self.windowstab.getWindowsNum() self.home.clickMore() self.toolbarpanel.clickToolsPanel(MY_COLLECTION) self.collectionandhistory.longClickCollection(COLLECTION_ID, 3) self.collectionandhistory.clickCollectNewWindowOpen() # 新窗口打开后的窗口数量 winNumAfter = self.windowstab.getWindowsNum() self.base.assertTrue(hotSearchWord, timeout=3) self.base.assertEqual(int(winNumBefore) + 3, int(winNumAfter), True, timeout=3) @allure.story('开启无痕模式,访问网站,不会生成历史记录 —— LJX') @pytest.mark.P1 def test14NoMarking(self, collectionAndHistory_init): ''' 1、获取历史第1条记录标题 2、打开无痕模式,点击一个热词进行搜索 3、返回上一层,获取历史第1条记录标题 4、断言历史第1条记录的标题没有改变 ''' self.home.clickMore() self.toolbarpanel.clickToolsPanel(HISTORY) historyTitleBefore = self.collectionandhistory.getHistoryTitle(1) # 返回上一层 self.pubmethod.clickBack() self.home.clickMore() self.collectionandhistory.openNoMarking() # 造一条历史数据 self.collectionandhistory.makeHistory(1) self.home.clickMore() self.toolbarpanel.clickToolsPanel(HISTORY) historyTitleAfter = self.collectionandhistory.getHistoryTitle(1) self.base.assertEqual(historyTitleBefore, historyTitleAfter, True, timeout=3)
class TestSetUpPage(): @pytest.fixture(scope="function") def setUp_init(self): self.base = Base(self.driver) self.home = HomePage(self.driver) self.pubmethod = PubMethod(self.driver) self.searchpanel = SearchPanelPage(self.driver) self.toolbarpanel = ToolBarPanelPage(self.driver) self.setup = SetUpPage(self.driver) self.news = NewsPage(self.driver) logging.info("") logging.info("****开始执行用例****") self.pubmethod.stopApp(BROWSER_PACKAGE_NAME) self.pubmethod.startApp(BROWSER_PACKAGE_NAME) self.base.browserWatcher() self.home.clickHome() self.home.clickHomeOnPage(HOME_PAGE) yield logging.info("****用例执行结束****") logging.info("") # ---wmw @allure.story('测试设置清除浏览器') def test001SetUpPage(self, setUp_init): ''' 1、点击主页工具菜单 2、点击设置 3、点击清除浏览器数据 4、点击Cookies 5、点击账号密码 6、点击地理位置授权 7、点击清除数据按钮 8、点击完成按钮 9、点击mback返回 10、点击首页搜索框 11、搜索框输入文本 12、点击进入 13、断言页面是否会重新提示地址位置授权 ''' # 点击主页工具菜单 self.home.clickMore() # 点击设置 self.toolbarpanel.clickSetUp() # 点击清除浏览器数据 self.setup.clickClearCoolkies() # 点击Cookies self.setup.clickCookies() # 点击账号密码 self.setup.clickAccountsAndPasswords() # 点击地理位置授权 self.setup.clickLocationAccess() # 点击清除数据按钮 self.setup.clickClearData() # 点击完成按钮 self.setup.clickDone() # 点击mback self.pubmethod.clickBack() # 点击首页搜索框 self.home.clickHomeSearch() # 搜索框输入文本"www.baidu.com" self.setup.inputbaidu() # 点击进入 self.searchpanel.clickSearchInto() # 断言页面是否会重新提示地址位置授权 self.base.assertTrue(GEOGRAPHY) # ---wmw @allure.story('测试切换搜索引擎') def test002SetUpPage(self, setUp_init): ''' 1、点击主页工具菜单 2、点击设置 3、点击搜索引擎 4、点击百度 5、点击mback返回 6、点击首页搜索框 7、搜索框输入123 8、点击搜索 9、# 断言页面是否存在百度 ''' # 点击主页工具菜单 self.home.clickMore() # 点击设置 self.toolbarpanel.clickSetUp() # 点击搜索引擎 self.setup.clickSearchEngine() # 点击百度 self.setup.clickBaidu() # 点击mback self.pubmethod.clickBack() # 点击首页搜索框 self.home.clickHomeSearch() # 搜索框输入123 self.setup.inputNumber() # 点击搜索 self.searchpanel.clickSearchInto() # 断言页面是否存在百度 self.base.assertTrue(SETUP_BAIDU) # ---wmw @allure.story('测试恢复默认设置') def test003SetUpPage(self, setUp_init): ''' 1、点击主页工具菜单 2、点击设置 3、点击广告屏蔽 4、获取未点击前,广告屏蔽,精选内容推送开关状态 5、点击精选内容推送 6、向下滑动到恢复默认设置 7、点击恢复默认设置 8、点击恢复 9、点击主页工具菜单 10、点击设置 11、获取点击后,广告屏蔽,精选内容推送开关状态 12、判断点击恢复默认设置前,广告屏蔽开关状态和恢复后广告屏蔽开关状态 ''' # 点击主页工具菜单 self.home.clickMore() # 点击设置 self.toolbarpanel.clickSetUp() # 点击广告屏蔽 self.setup.clickBlockAds(BLOCK_ADS_SWITCH) BeforeBlockAdsText = self.setup.obtainBlockAdsSwitch(BLOCK_ADS_SWITCH) sleep(4) # 点击精选内容推送 self.setup.clickSwipeLeftRight(SWIPE_LEFT_RIGHT_SWITCH) sleep(4) BeforeSwipeLeftRight = self.setup.obtainSwipeLeftRightSwitch( SWIPE_LEFT_RIGHT_SWITCH) # 向下滑动到恢复默认设置 self.base.scrollToElement(SETUP_RESET_TEXT) # 点击恢复默认设置 self.setup.clickResetToDefault() # 点击恢复 self.setup.clickReset() # 点击主页工具菜单 self.home.clickMore() # 点击设置 self.toolbarpanel.clickSetUp() AfterBlockAdsText = self.setup.obtainBlockAdsSwitch(BLOCK_ADS_SWITCH) AfterSwipeLeftRight = self.setup.obtainSwipeLeftRightSwitch( SWIPE_LEFT_RIGHT_SWITCH) # 判断点击恢复默认设置前,广告屏蔽开关状态和恢复后广告屏蔽开关状态 self.base.assertEqual(BeforeBlockAdsText, AfterBlockAdsText, False) self.base.assertEqual(BeforeSwipeLeftRight, AfterSwipeLeftRight, False) # ---wmw @allure.story('测试简版显示是否正常') def test004SetUpPage(self, setUp_init): # 点击主页工具菜单 self.home.clickMore() # 点击设置 self.toolbarpanel.clickSetUp() # 点击魅族头条设置 self.setup.clickMeizuHeadlinesSettings() # 点击简版显示 self.setup.clickSimple() # 点击mback self.pubmethod.clickBack() # 断言页面魅族头条是否存在 self.base.assertTrue(SETUP_MEIZU_HEADLINES) # 点击简版显示--更多 self.setup.clickSetUpMore() # 点击“倒三角”进入频道管理页面 self.news.clickNewsTriangle() # 点击“星座”频道打开,进入资讯流列表 self.news.clickNewsChannel(NEWS_CHANNEL_CONSTELLATION) # 提取资讯流页面第一个文章的文本信息 afterText = self.news.getNewsArticleTitle() # 点击工具栏资讯刷新页面 self.home.clickInformation() # 断言页面是否存刷新成功 self.base.assertTrue(afterText, False) sleep(5) # 打开资讯文章 self.news.clickOpenNewsArticle() beforeText = self.pubmethod.getBaiduApiText(NEWS_PAGE_MOREMENU) self.base.assertEqual(afterText, beforeText, True)