Beispiel #1
0
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)
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)
Beispiel #3
0
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)
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)