def test_logout_operation(self): """ test_cases/test_login_operations.py:LoginTestCase.test_login_operation Summary: 登出case """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: common_action = access_to_window.ActionsAccess2Window( self.get_driver()) common_action.go_to_user_center_tab() log.logger.info("进入用户中心tab页") curr_user_center_tab = user_center_tab_window.UserCenterTabWindow( base_app) log.logger.info("向上滑动整个屏幕,使\"设置\"出现在屏幕中") curr_user_center_tab.swipe_up_entire_scroll_view() log.logger.info("点击设置栏") status = curr_user_center_tab.tap_settings_bar() self.assertTrue(status, "没有进入用户设置页面") curr_user_setting_window = user_setting_window.UserSettingWindow( base_app) log.logger.info("向上滑动屏幕,使\"退出登录\"出现在屏幕中") curr_user_setting_window.swipe_up_entire_scroll_view() status = curr_user_setting_window.tap_logout_bar() self.assertTrue(status, "用户退出失败") except Exception as exp: log.logger.error("发现异常, case:test_logout_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'logout', exp)
def test_edit_avatar_operation(self): """ test_cases/test_user_center_operations.py:UserCenterTestCase.test_edit_avatar_operation Summary: 编辑头像信息 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_user_center_window = user_center_tab_window.UserCenterTabWindow( base_app) log.logger.info("点击进入用户信息页面") status = curr_user_center_window.tap_user_head_bar() self.assertTrue(status, "进入用户信息页失败") curr_user_info_window = user_info_window.UserInfoWindow(base_app) status = curr_user_info_window.upload_avatar() log.logger.info("验证图片上传结果") self.assertTrue(status, "上传图片失败") log.logger.info("验证结束,结果正确") except Exception as exp: log.logger.error("发现异常, case:test_edit_avatar_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'edit_avatar', exp)
def test_login_operation(self): """ test_cases/test_login_operations.py:LoginTestCase.test_login_operation Summary: 登录case """ base_app = base_frame_view.BaseFrameView(self.get_driver()) thread_number = self.get_current_thread_number() try: curr_login_window = login_main_window.LoginMainWindow(base_app) account = self.config_model.get('account', 'account' + str(thread_number)) password = self.config_model.get('account', 'password' + str(thread_number)) curr_login_window.input_account(account) curr_login_window.input_password(password) log.logger.info("开始点击登录按钮") login_status = curr_login_window.tap_login_button() log.logger.info("验证登录结果,登录是否跳转成功") self.assertTrue(login_status, "登陆失败") except Exception as exp: log.logger.error("发现异常, case:test_login_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'login', exp)
def test_discover_normal_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_discover_normal_operation Summary: 常规操作-下拉刷新/上滑动加载 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) log.logger.info("下拉刷新") curr_discover_activity.swipe_down_entire_scroll_view() self.assertTrue(True, "下拉刷新失败", "发现页下拉刷新") log.logger.info("向上滑动加载") curr_discover_activity.swipe_up_entire_scroll_view() curr_discover_activity.swipe_up_entire_scroll_view() curr_discover_activity.swipe_up_entire_scroll_view() self.assertTrue(True, "上滑分页加载失败", "发现页上滑分页加载") except Exception as exp: log.logger.error("发现异常, case:test_send_topic_topic_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'send_topic', exp)
def test_focus_normal_operation(self): """ test_cases/test_friends_operations.py:FocusTestCase.test_focus_normal_operation Summary: 关注页操作:下拉刷新-分页加载-切换分类 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_focus_activity = focus_tab_activity.FocusTabActivity(base_app) log.logger.info("向下滑动,下拉刷新") curr_focus_activity.swipe_down_entire_scroll_view() self.assertTrue(True, "下拉刷新失败", "关注页下拉刷新") log.logger.info("向上滑动, 加载多个页面") curr_focus_activity.swipe_up_entire_scroll_view() curr_focus_activity.swipe_up_entire_scroll_view() curr_focus_activity.swipe_up_entire_scroll_view() self.assertTrue(True, "上滑分页加载失败", "关注页分页加载") except Exception as exp: log.logger.error("发现异常, case:test_focus_normal_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'focus_normal', exp)
def test_essence_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_essence_operation Summary: 发现首页-》点击九宫格箭头-》分类-》精选分类选择分类/点击图片/点赞 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) curr_discover_activity.swipe_up_entire_scroll_view() log.logger.info("点击九宫格箭头跳转") status = curr_discover_activity.tap_head_bar_more() self.assertTrue(status, "进入全部分类页面失败") curr_cate_activity = all_category_activity.AllCategoryActivity( base_app) curr_cate_activity.swipe_up_entire_scroll_view() curr_cate = curr_cate_activity.category_list[0] log.logger.info("点击精选分类的\"{}\"".format(curr_cate.text)) curr_cate.tap() curr_essence_activity = essence_recommend_activity.EssenceRecommendActivity( base_app) log.logger.info("开始切换精选分类") curr_tab = curr_essence_activity.tab_list[2] log.logger.info("点击tab\"{}\"".format(curr_tab.text)) curr_tab.tap(4) status = curr_essence_activity.wait_for_newest_photo_album(6) self.assertTrue(status, "新相册加载失败", "切换精选分类-第三个类目") curr_tab = curr_essence_activity.tab_list[0] log.logger.info("点击tab\"{}\"".format(curr_tab.text)) curr_tab.tap(4) status = curr_essence_activity.wait_for_newest_photo_album(6) self.assertTrue(status, "新相册加载失败", "切换精选分类-第一个类目") log.logger.info("开始点赞") log.logger.info("对当前首张专辑进行点赞") status = curr_essence_activity.photo_list[0].tap_like_button() self.assertTrue(status, "点赞失败", "照片集点赞") log.logger.info("取消点赞") log.logger.info("对当前首张专辑取消点赞") status = curr_essence_activity.photo_list[0].tap_like_button(False) self.assertTrue(status, "点赞失败", "照片集取消点赞") log.logger.info("点击图片") status = curr_essence_activity.photo_list[1].tap() self.assertTrue(status, "进入个人相册详情页失败", "点击精选相册照片") except Exception as exp: log.logger.error("发现异常, case:test_essence_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'test_essence', exp)
def __init__(self, driver): self.__driver = driver self.__base_app = base_frame_view.BaseFrameView(self.__driver) self.__model_config = model.config_parser # ******************多设备相关变量********************** self.__thread_number = thread_device_pool.ThreadDeviceInfoPool.get_current_thread_number( )
def test_discover_skip_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_discover_skip_operation Summary: 跳转操作-热门话题箭头跳转/切换图片分类/点击图片跳转/广告跳转/故事集跳转 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) log.logger.info("点击热门话题箭头跳转") status = curr_discover_activity.tap_hot_topic_icon() self.assertTrue(status, "进入话题广场页面失败", "进入话题广场") action.back(activities.ActivityNames.IN_MAIN) log.logger.info("向上滑动使图片栏固定在顶部") curr_discover_activity.swipe_up_entire_scroll_view() #curr_discover_activity.swipe_up_any_view(ratio=0.1) log.logger.info("切换图片分类") log.logger.info("点击最新tab") curr_discover_activity.newest_header_tab.tap() status = curr_discover_activity.is_square_item_exisit() self.assertTrue(status, "切换图片分类失败", "切换图片分类-最新") log.logger.info("点击最热tab") curr_discover_activity.hotest_header_tab.tap() status = curr_discover_activity.is_square_item_exisit() self.assertTrue(status, "切换图片分类失败", "切换图片分类-最热") status = curr_discover_activity.first_photo_item.tap() self.assertTrue(status, "进入图片详情页面失败", "发现页点击九宫格图片") action.back(activities.ActivityNames.IN_MAIN) if curr_discover_activity.first_live_item: # 存在直播,则进入直播页 status = curr_discover_activity.first_live_item.tap() self.assertTrue(status, "进入直播页面失败") action.back(activities.ActivityNames.IN_MAIN) if curr_discover_activity.first_story_item: # 存在故事集,则进入故事集页 status = curr_discover_activity.first_story_item.tap() self.assertTrue(status, "进入故事集详情页面失败", "发现页点击九宫格故事集") action.back(activities.ActivityNames.IN_MAIN) if curr_discover_activity.ad_item: status = curr_discover_activity.tap_ad() self.assertTrue(status, "进入广告页面失败", "发现页点击九宫格广告") action.back(activities.ActivityNames.IN_MAIN) except Exception as exp: log.logger.error("发现异常, case:test_send_topic_topic_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'send_topic', exp)
def test_publish_story_from_in_gallery_operation(self): """ test_cases/test_story_operations.py:StoryTestCase.test_publish_story_from_in_gallery_operation Summary: 发布故事集-点击写故事-点击照片-点击in记相册选择照片上传 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_gallery_window = story_gallery_window.StoryGalleryWindow( base_app) # 点击上方相册选择列表选择IN相册 curr_gallery_window.tap_album_droplist() curr_gallery_window.tap_in_diary_album() log.logger.info("随机选择几张照片") indexes = [1, 3, 4] curr_gallery_window.select_photo_from_in_diary(indexes) log.logger.info("验证已选中的图片的数目") self.assertEqual(str(len(indexes)), curr_gallery_window.selected_story_photo_count, "选择的图片数量不一致") curr_gallery_window.tap_story_continue_button() curr_story_edit_window = story_edit_window.StoryEditWindow( base_app) curr_story_edit_window.diary_cover_detail.input_diary_name( u'in记相册发布文章') curr_story_edit_window.diary_cover_detail.input_diary_beginning( u'in记相册发布文章,发布文章开头') curr_story_edit_window.tap_preview_button() curr_story_preview_window = story_preview_window.StoryPreviewWindow( base_app) curr_story_preview_window.tap_next_button() curr_story_setting_window = story_setting_window.StorySettingWindow( base_app) curr_story_setting_window.tap_finish_button() curr_story_share_window = story_share_window.StoryShareWindow( base_app) self.assertTrue(curr_story_share_window.is_publish_success(), "发布日记未成功") status = curr_story_share_window.tap_close_button() self.assertTrue(status, "进入in主页失败") except Exception as exp: log.logger.error( "发现异常, case:test_publish_story_from_in_gallery_operation执行失败") self.raise_exp_and_save_screen_shot( base_app, 'publish_story_from_in_gallery', exp)
def test_login_operation(self): """ test_cases/test_login_operations.py:LoginTestCase.test_login_operation Summary: 登录case """ base_app = base_frame_view.BaseFrameView(self.get_driver()) common_action = access_action.AccessAction(self.get_driver()) thread_number = self.get_current_thread_number() try: curr_login_activity = login_main_activity.LoginMainActivity( base_app) curr_login_activity.skip_to_login_main() account = self.config_model.get('account', 'account' + str(thread_number)) password = self.config_model.get('account', 'password' + str(thread_number)) curr_login_activity.input_account(account) curr_login_activity.input_password(password) log.logger.info("开始点击登录按钮") login_status = curr_login_activity.tap_login_button() log.logger.info("验证登录结果,登录是否跳转成功") self.assertTrue(login_status, "登陆失败", "输入账号密码登陆") common_action.go_to_user_center_tab() log.logger.info("进入用户中心tab页") curr_user_center_tab = user_center_tab_activity.UserCenterTabActivity( base_app) log.logger.info("向上滑动整个屏幕,使\"设置\"出现在屏幕中") curr_user_center_tab.swipe_up_entire_scroll_view() log.logger.info("点击设置栏") status = curr_user_center_tab.tap_settings_bar() self.assertTrue(status, "没有进入用户设置页面", "进入用户设置页") curr_user_setting_activity = user_setting_activity.UserSettingActivity( base_app) log.logger.info("向上滑动屏幕,使\"退出登录\"出现在屏幕中") curr_user_setting_activity.swipe_up_entire_scroll_view() status = curr_user_setting_activity.tap_logout_bar() self.assertTrue(status, "用户退出失败", "退出按钮退出") except Exception as exp: log.logger.error("发现异常, case:test_login_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'login', exp)
def test_publish_paster_available_operation(self): """ test_cases/test_paster_operations.py:PasterTestCase.test_publish_paster_available_operation Summary: 发布已有贴纸 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_my_own_paster_tab_window = my_own_paster_tab_window.MyOwnPasterTabWindow(base_app) # 记录当前贴纸个数 tmp_my_paster_num = len(curr_my_own_paster_tab_window.my_custom_paster_list) log.logger.info("当前已有贴纸数{}张".format(tmp_my_paster_num)) index = random.randint(0, tmp_my_paster_num-1) log.logger.info("点击第{}张贴纸".format(index+1)) status = curr_my_own_paster_tab_window.choose_custom_paster(index+1) self.assertTrue(status, "吊起贴纸对话框失败") curr_paster_box = custom_paster_msgbox.CustomPasterMsgBox(base_app) status = curr_paster_box.tap_use_button() self.assertTrue(status, "使用贴纸失败") log.logger.info("选择图片,编辑贴纸") curr_camera_window = photo_camera_window.CameraWindow(base_app) indexes = (3, 1, 4) curr_camera_window.select_photos(indexes[0], indexes[1], indexes[2]) log.logger.info("验证所选图片是否已选中") for index, value in enumerate(indexes, start=1): self.assertEqual(str(index), curr_camera_window.photo_list[value-1].selected_value, "选中序号不正确") log.logger.info("图片选择验证完毕") status = curr_camera_window.tap_next_step_button() self.assertTrue(status, "进入发布加工页失败") curr_publish_core_window = publish_core_window.PublishCoreWindow(base_app) status = curr_publish_core_window.tap_finish_button() self.assertTrue(status, "进入发布页失败") curr_publish_window = publish_window.PublishWindow(base_app) curr_publish_window.input_words(u"测试发布") curr_publish_window.tap_publish_button() log.logger.info("开始验证发布情况") status = curr_publish_window.is_publish_successful() self.assertTrue(status, "发布失败") log.logger.info("发布情况验证完毕") except Exception as exp: log.logger.error("发现异常, case:test_publish_paster_available_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'test_publish_paster', exp)
def test_create_paster_operation(self): """ test_cases/test_paster_operations.py:PasterTestCase.test_create_paster_operation Summary: 创建贴纸 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_my_own_paster_tab_window = my_own_paster_tab_window.MyOwnPasterTabWindow(base_app) if curr_my_own_paster_tab_window.is_guide_exist(): curr_my_own_paster_tab_window.tap_window_top() # 记录当前贴纸个数 tmp_my_paster_num = len(curr_my_own_paster_tab_window.my_custom_paster_list) log.logger.info("当前已有贴纸数{}张".format(tmp_my_paster_num)) curr_my_own_paster_tab_window.tap_add_paster_button() status = curr_my_own_paster_tab_window.select_from_gallery() self.assertTrue(status, "进入图片选择页失败") curr_album_picker_window = album_picker_window.PhotoAlbumPickerWindow(base_app) curr_album_picker_window.post_photo_album_list[3].tap() curr_photo_picker_window = photo_picker_window.PhotoPickerWindow(base_app) log.logger.info("选择第三张图片加工为贴纸") curr_photo_picker_window.post_photo_list[2].tap() curr_photo_crop_window = custom_paster_crop_window.CustomPasterCropWindow(base_app) curr_photo_crop_window.tap_next_button() curr_choose_part_photo_window = choose_part_paster_window.ChoosePartPasterWindow(base_app) curr_choose_part_photo_window.tap_continue_button() curr_editor_photo_window = custom_paster_editor_window.CustomPasterEditorWindow(base_app) curr_editor_photo_window.tap_finish_button() log.logger.info("验证创建的贴纸添加到了已有贴纸里面") now_my_paster_num = len(curr_my_own_paster_tab_window.my_custom_paster_list) log.logger.info("现在贴纸数目{}张".format(now_my_paster_num)) log.logger.info("检查新增贴纸的new标记") self.assertTrue(curr_my_own_paster_tab_window.new_paster_icon.is_displayed(), "新增标记未出现") log.logger.info("新增贴纸的new标记已检测成功") self.assertEqual(1, now_my_paster_num-tmp_my_paster_num, "贴纸数量不一致,创建贴纸失败") except Exception as exp: log.logger.error("发现异常, case:test_paster_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'create_paster', exp)
def test_3rd_party_login_operation(self): """ test_cases/test_login_operations.py:LoginTestCase.test_3rd_party_login_operation Summary: 第三方登录case """ base_app = base_frame_view.BaseFrameView(self.get_driver()) common_action = access_action.AccessAction(self.get_driver()) try: curr_login_activity = login_main_activity.LoginMainActivity( base_app) curr_login_activity.skip_to_login_main() log.logger.info("开始点击QQ登录按钮") status = curr_login_activity.tap_qq_login_button() self.assertTrue(status, "进入QQ授权页面失败", "QQ登陆页面") curr_qq_auth_activity = qq_auth_activity.QQAuthActivity(base_app) status = curr_qq_auth_activity.tap_login_button() log.logger.info("验证QQ登录结果,登录是否跳转成功") self.assertTrue(status, "登陆失败") common_action.go_to_user_center_tab() log.logger.info("进入用户中心tab页") curr_user_center_tab = user_center_tab_activity.UserCenterTabActivity( base_app) log.logger.info("向上滑动整个屏幕,使\"设置\"出现在屏幕中") curr_user_center_tab.swipe_up_entire_scroll_view() log.logger.info("点击设置栏") status = curr_user_center_tab.tap_settings_bar() self.assertTrue(status, "没有进入用户设置页面") curr_user_setting_activity = user_setting_activity.UserSettingActivity( base_app) log.logger.info("向上滑动屏幕,使\"退出登录\"出现在屏幕中") curr_user_setting_activity.swipe_up_entire_scroll_view() status = curr_user_setting_activity.tap_logout_bar() self.assertTrue(status, "用户退出失败", "用户退出") log.logger.info("点击微博登录") log.logger.info("只考虑当前微博已登录并已授权的情况") except Exception as exp: log.logger.error("发现异常, case:test_3rd_party_login_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, '3rd_party_login', exp)
def test_take_and_pick_photo_operation(self): """ test_cases/test_photo_operations.py:PhotoTestCase.test_take_and_pick_photo_operation Summary: 拍照同时选中已有的图片-进入编辑加工页 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: action.back(activities.ActivityNames.CAMERA2) curr_camera2_activity = camera2_activity.Camera2Activity(base_app) log.logger.info("点击拍照") curr_camera2_activity.tap_camera() log.logger.info("点击拍照完成按钮") curr_camera2_activity.tap_finish_camera() curr_publish_core_activity = publish_core_activity.PublishCoreActivity(base_app) self.assertTrue(curr_publish_core_activity.photo_available_list[0].is_selected, "拍照的照片在加工页未选中", "拍照-刚拍的照片选中检测") status = curr_publish_core_activity.tap_add_photo_button() self.assertTrue(status, "添加图片,进入图片选择页失败") curr_gallery_activity = story_gallery_activity.StoryGalleryActivity(base_app) photo_count = curr_gallery_activity.image_photo_enable_picked_count curr_photo_list = curr_gallery_activity.image_photo_list log.logger.info("随机选1张图片") # 选随机选择几张图片,为了排除底部遮罩tab的干扰,图片最多选择11张 max_pick_count = photo_count if photo_count < 11 else 11 index = random.randint(2, max_pick_count) # 该页面第一个格子为拍照按钮 log.logger.info("选择相册中的第{}张照片".format(index)) curr_photo_list[index-1].select() log.logger.info("验证该图片有没有被选中") self.assertEqual('2', curr_photo_list[index-1].check_value, "该图片没有被选中", "拍照-选中已有照片检测") log.logger.info("该图片已被选中") log.logger.info("验证已选中的图片的数目") self.assertEqual('2', curr_gallery_activity.selected_photo_count, "选择的图片数量不一致", "拍照-验证已选择照片数目") status = curr_gallery_activity.tap_photo_next_step_button() self.assertTrue(status, "进入照片加工页失败") except Exception as exp: log.logger.error("发现异常, case:test_take_and_pick_photo_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'take_and_pick_photo', exp)
def test_search_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_search_operation Summary: 搜索操作-搜索用户/话题-点击进入用户/话题页面 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) log.logger.info("点击搜索框") curr_discover_activity.tap_search_box() log.logger.info("进入搜索页面") curr_search_page = discover_tab_activity.SearchPage(base_app) search_value = 'infashiontest' action.send_string(search_value) log.logger.info("验证搜索结果列表出现") self.assertTrue(curr_search_page.is_search_result_exist(), "没有搜索结果", "发现页搜索用户") status = curr_search_page.user_list[0].tap() self.assertTrue(status, "进入用户in记页失败") action.back(activities.ActivityNames.IN_MAIN) log.logger.info("清空搜索框遗留内容") curr_search_page.top_search_bar.search_box.clear_text_field() action.send_proud_key() self.assertTrue(curr_search_page.is_search_result_exist(), "没有搜索结果", "发现页搜索话题") status = curr_search_page.tag_list[0].tap() self.assertTrue(status, "进入话题页失败") action.back(activities.ActivityNames.IN_MAIN) # curr_search_page.top_search_bar.input_search_value(search_value) except Exception as exp: log.logger.error("发现异常, case:test_send_topic_topic_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'send_topic', exp)
def test_take_photo_operation(self): """ test_cases/test_photo_operations.py:PhotoTestCase.test_take_photo_operation Summary: 拍照-选中拍照的图片-进入加工-返回-临时保存 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: action.back(activities.ActivityNames.CAMERA2) curr_camera2_activity = camera2_activity.Camera2Activity(base_app) log.logger.info("点击拍照") status = curr_camera2_activity.tap_camera() self.assertTrue(status, "拍照失败", "点击拍照") log.logger.info("点击拍照完成按钮") status = curr_camera2_activity.tap_finish_camera() self.assertTrue(status, "拍照完成失败", "加工拍照图片") # 2.9.9之前版本的步骤 # curr_gallery_activity = story_gallery_activity.StoryGalleryActivity(base_app) # # log.logger.info("切换一次底部tab,避免\"发布故事集\"的引导遮罩对选取图片的干扰") # curr_gallery_activity.tap_story_tab() # curr_gallery_activity.tap_photo_tab() # # status = curr_gallery_activity.open_camera() # self.assertTrue(status, "进入故事照片编辑页失败", "进入拍照页") # # log.logger.info('点击拍照') # curr_story_camera_activity = story_camera_activity.StoryCameraActivity(base_app) # curr_story_camera_activity.tap_camera() # log.logger.info('选中刚拍照的图片') # curr_story_camera_activity.photo_list[0].select() # self.assertTrue(curr_story_camera_activity.photo_list[0].is_selected, '刚拍的照片没选中', "拍照并选中刚拍的照片") # # curr_story_camera_activity.tap_next_step_button() curr_publish_core_activity = publish_core_activity.PublishCoreActivity(base_app) log.logger.info("验证返回按钮,返回拍照编辑页") curr_publish_core_activity.tap_back_button(save=False, cancel=False) except Exception as exp: log.logger.error("发现异常, case:test_take_photo_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'take_photo', exp)
def test_select_city_operation(self): """ test_cases/test_user_center_operations.py:UserCenterTestCase.test_edit_avatar_operation Summary: 选择地区-选择城市 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_user_center_window = user_center_tab_window.UserCenterTabWindow( base_app) log.logger.info("点击进入用户信息页面") status = curr_user_center_window.tap_user_head_bar() self.assertTrue(status, "进入用户信息页失败") curr_user_info_window = user_info_window.UserInfoWindow(base_app) log.logger.info("选择地区为浙江杭州") curr_user_info_window.select_region('hangzhou') region_text = curr_user_info_window.region_text expected_text = '浙江 杭州' log.logger.info("验证显示的城市名") self.assertEqual( expected_text, region_text, "显示的名称不正确,期待名称:\"{}\",实际名称\"{}\"".format( expected_text, region_text)) log.logger.info("验证结束,结果正确") log.logger.info("选择地区为浙江宁波") curr_user_info_window.select_region('ningbo') region_text = curr_user_info_window.region_text expected_text = '浙江 宁波' log.logger.info("验证显示的城市名") self.assertEqual( expected_text, region_text, "显示的名称不正确,期待名称:\"{}\",实际名称\"{}\"".format( expected_text, region_text)) log.logger.info("验证结束,结果正确") except Exception as exp: log.logger.error("发现异常, case:test_select_city_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'select_city', exp)
def test_send_topic_comment_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_send_topic_comment_operation Summary: 选择话题评论 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) log.logger.info("选择话题") status = curr_discover_activity.select_hot_topic(1) self.assertTrue(status, "进入话题详情页失败") curr_topic_activity = topic_detail_activity.TopicDetailActivity( base_app) curr_topic_activity.swipe_up_entire_scroll_view() curr_hot_container = curr_topic_activity.hotest_container_list[0] status = curr_hot_container.tap_to_submit_comment() self.assertTrue(status, "进入图片详情页失败") curr_friend_photo_activity = friend_photo_detail_activity.FriendPhotoDetailActivity( base_app) input_comment = u'in喜欢这个' curr_friend_photo_activity.input_comment(input_comment) curr_friend_photo_activity.tap_send_button() curr_friend_photo_activity.tap_back_button() user_name = self.config_model.get( 'account', 'user_name' + self.get_current_thread_number()) self.assertEqual(user_name + ' ' + input_comment.encode('utf8'), curr_hot_container.latest_comment, "最新的发布文字和刚刚发布的文字不一致") except Exception as exp: log.logger.error("发现异常, case:test_send_topic_topic_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'send_topic', exp)
def test_create_paster_operation(self): """ test_cases/test_paster_operations.py:PasterTestCase.test_create_paster_operation Summary: 创建贴纸 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_my_own_paster_tab_activity = my_own_paster_tab_activity.MyOwnPasterTabActivity( base_app) # 记录当前贴纸个数 tmp_my_paster_num = len( curr_my_own_paster_tab_activity.my_custom_paster_list) log.logger.info("当前已有贴纸数{}张".format(tmp_my_paster_num)) curr_my_own_paster_tab_activity.tap_add_paster_button(auto=True) if curr_my_own_paster_tab_activity.is_guide_exist(): # 如果是首次添加贴纸,则进行引导页的操作 curr_crop_activity = custom_paster_crop_activity.CustomPasterCropActivity( base_app) status = curr_crop_activity.tap_create_my_paster_button() self.assertTrue(status, "进入贴纸选择导航页失败", "创建贴纸-首次-进入贴纸引导页") curr_guide_photo_activity = select_photo_guide_activity.SelectPhotoGuideActivity( base_app) status = curr_guide_photo_activity.tap_guide_tip() self.assertTrue(status, "进入图片选择页失败", "创建贴纸-首次-取消引导进入图片选择页") curr_photo_picker_activity = photo_picker_activity.PhotoPickerActivity( base_app) index = 1 curr_photo_picker_activity.select_image(index) status = curr_photo_picker_activity.tap_next_step_button() self.assertTrue(status, "进入图片区域选择页失败", "创建贴纸-首次-进入图片选择页") status = curr_crop_activity.tap_continue_button() self.assertTrue(status, "进入图片剪切页失败", "创建贴纸-首次-进入图片剪切页") log.logger.info("点击一次屏幕中心,取消图片剪切页的引导遮罩") base_app.tap_window_center() curr_cut_out_activity = cut_out_paster_activity.CutOutPasterActivity( base_app) status = curr_cut_out_activity.tap_continue_button() self.assertTrue(status, "进入贴纸搭配页失败", "创建贴纸-首次-进入贴纸搭配页") log.logger.info("点击一下屏幕中心,取消贴纸搭配页的引导遮罩") base_app.tap_window_center() else: # 非首次点击添加贴纸,则从底部吊起贴纸添加选择面板 index = 2 log.logger.info("吊起添加贴纸面板,选择第{}张贴纸作为模板".format(index)) status = curr_my_own_paster_tab_activity.select_paster_available( index) self.assertTrue(status, "进入贴纸搭配页失败", "非首次-进入贴纸搭配页") curr_paster_editor_activity = custom_paster_editor_activity.CustomPasterEditorActivity( base_app) status = curr_paster_editor_activity.tap_continue_button() self.assertTrue(status, "创建贴纸失败", "创建贴纸") log.logger.info("验证创建的贴纸添加到了已有贴纸里面") now_my_paster_num = len( curr_my_own_paster_tab_activity.my_custom_paster_list) log.logger.info("现在贴纸数目{}张".format(now_my_paster_num)) self.assertEqual(1, now_my_paster_num - tmp_my_paster_num, "贴纸数量不一致,创建贴纸失败", "创建后,贴纸数目检测") except Exception as exp: log.logger.error("发现异常, case:test_paster_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'create_paster', exp)
def test_publish_photo_operation(self): """ test_cases/test_photo_operations.py:PhotoTestCase.test_publish_photo_operation Summary: 发布图片 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_gallery_window = story_gallery_window.StoryGalleryWindow( base_app) log.logger.info("切换一次底部tab,避免\"发布故事集\"的引导遮罩对选取图片的干扰") curr_gallery_window.tap_story_tab() curr_gallery_window.tap_photo_tab() # 当前图片tab下的图片列表 curr_photo_list = curr_gallery_window.image_photo_list photo_count = curr_gallery_window.image_photo_enable_picked_count picked_count = 3 log.logger.info("随机选{}张图片".format(picked_count)) # 选随机选择几张图片,为了排除底部遮罩tab的干扰,图片最多选择11张 max_pick_count = photo_count if photo_count < 11 else 11 for index, photo_index in enumerate( random.sample(xrange(max_pick_count), picked_count)): log.logger.info("选择第{}张照片,相册中的第{}张照片".format( index + 1, photo_index + 1)) curr_photo_list[photo_index].select() log.logger.info("验证该图片有没有被选中") self.assertEqual(str(index + 1), curr_photo_list[photo_index].check_value, "该图片没有被选中") log.logger.info("该图片已被选中") log.logger.info("验证已选中的图片的数目") self.assertEqual(str(picked_count), curr_gallery_window.selected_photo_count, "选择的图片数量不一致") log.logger.info("已完成对已选图片数目的验证") curr_gallery_window.tap_photo_continue_button() curr_publish_core_window = publish_core_window.PublishCoreWindow( base_app) if curr_publish_core_window.is_guide_mask_exist(): log.logger.info("点击屏幕中央,避免引导遮罩干扰") curr_publish_core_window.tap_window_center() log.logger.info("验证发布加工页的图片数") self.assertEqual( picked_count, len(curr_publish_core_window.photo_available_list), "发布加工页面图片数目不正确") curr_publish_core_window.tap_finish_button() curr_publish_window = publish_window.PublishWindow(base_app) curr_publish_window.input_words(u"测试图片发布") curr_publish_window.tap_publish_button() log.logger.info("开始验证发布情况") status = curr_publish_window.is_publish_successful() self.assertTrue(status, "发布失败") except Exception as exp: log.logger.error("发现异常, case:test_publish_photo_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'publish_photo', exp)
def test_publish_paster_available_operation(self): """ test_cases/test_paster_operations.py:PasterTestCase.test_publish_paster_available_operation Summary: 发布已有贴纸 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_my_own_paster_tab_activity = my_own_paster_tab_activity.MyOwnPasterTabActivity( base_app) # 记录当前贴纸个数 tmp_my_paster_num = len( curr_my_own_paster_tab_activity.my_custom_paster_list) log.logger.info("当前已有贴纸数{}张".format(tmp_my_paster_num)) index = random.randint(1, tmp_my_paster_num - 1) log.logger.info("点击第{}张贴纸".format(index)) status = curr_my_own_paster_tab_activity.choose_custom_paster( index) self.assertTrue(status, "吊起贴纸对话框失败", "发布已有贴纸-吊起贴纸对话框") curr_paster_box = custom_paster_msgbox.CustomPasterMsgBox(base_app) status = curr_paster_box.tap_use_button() self.assertTrue(status, "使用贴纸失败", "发布已有贴纸-使用贴纸") curr_camera2_activity = camera2_activity.Camera2Activity(base_app) if curr_camera2_activity.is_continue_popup_exist(): log.logger.info("存在\"是否保留上次贴纸\"的提示遮罩") popup_window = continue_popup_window.ContinuePopupWindow( base_app) log.logger.info("点击新建按钮") popup_window.tap_new_button() status = curr_camera2_activity.tap_camera() self.assertTrue(status, '贴纸确定失败', '使用贴纸-贴纸拍照') log.logger.info("确认贴纸") status = curr_camera2_activity.tap_finish_camera() self.assertTrue(status, "进入贴纸发布加工页失败") curr_publish_core_activity = publish_core_activity.PublishCoreActivity( base_app) if curr_publish_core_activity.is_guide_mask_exist( ) or curr_publish_core_activity.is_sticker_mask_exist(): curr_publish_core_activity.tap_window_center() # ***********标签检测********************* log.logger.info('点击标签按钮,吊起标签遮罩') status = curr_publish_core_activity.tap_mark_tool() self.assertTrue(status, '吊起标签失败') log.logger.info('点击文字标签') status = curr_publish_core_activity.tap_words_tag() self.assertTrue(status, "进入文字标签页失败") curr_words_tag_activity = publish_words_tag_activity.PublishWordsTagActivity( base_app) curr_words_tag_activity.input_words(u'庐山升龙霸') curr_words_tag_activity.tap_add_button() self.assertTrue(curr_words_tag_activity.is_tag_added_successful(), '标签添加失败', "发布贴纸-添加文字标签") log.logger.info("添加图片到发布贴纸") curr_publish_core_activity.tap_add_photo_button() log.logger.info("选择图片,编辑贴纸") curr_story_gallery_activity = story_gallery_activity.StoryGalleryActivity( base_app) indexes = (3, 2, 4) for index, value in enumerate(indexes, start=1): curr_story_gallery_activity.select_image_photo(value) self.assertEqual( str(index + 1), curr_story_gallery_activity.image_photo_list[ value - 1].check_value, "选中序号不正确", "发布已有贴纸-第{}张图的序号{}检测".format(value, index)) log.logger.info("验证总贴纸数") self.assertEqual('4', curr_story_gallery_activity.selected_photo_count, "选择的贴纸总数不正确", "发布已有贴纸-增加贴纸数检测") # 拍照+选择3张共4张 status = curr_story_gallery_activity.tap_photo_next_step_button() self.assertTrue(status, "进入发布加工页失败") if curr_publish_core_activity.is_guide_mask_exist( ) or curr_publish_core_activity.is_sticker_mask_exist(): curr_publish_core_activity.tap_window_center() self.assertEqual( len(indexes) + 1, len(curr_publish_core_activity.photo_available_list), "发布贴纸数量不正确", "发布贴纸-发布加工页-验证贴纸图片数") status = curr_publish_core_activity.tap_finish_button() self.assertTrue(status, "进入发布页失败", "发布已有贴纸-进入发布页") curr_publish_activity = publish_activity.PublishActivity(base_app) log.logger.info("验证发布的图片数量") self.assertEqual( len(indexes) + 1, len(curr_publish_activity.photo_available_list), "发布贴纸数量不正确", "发布页-发布页验证贴纸图片数") curr_publish_activity.input_words(u"测试发布") curr_publish_activity.tap_publish_button() log.logger.info("开始验证发布情况") status = curr_publish_activity.is_publish_successful() self.assertTrue(status, "发布失败", "发布已有贴纸") except Exception as exp: log.logger.error( "发现异常, case:test_publish_paster_available_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'test_publish_paster', exp)
def test_publish_story_operation(self): """ test_cases/test_story_operations.py:StoryTestCase.test_publish_story_operation Summary: 发布故事集 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_gallery_window = story_gallery_window.StoryGalleryWindow( base_app) # 当前选择的相册内的照片列表 curr_photo_list = curr_gallery_window.story_photo_list # 相册集中的照片,为了排除底部四张照片被遮罩tab的干扰,最多选择前12张 max_photo_count = len( curr_photo_list) if len(curr_photo_list) < 12 else 12 picked_count = random.randint(1, max_photo_count) # 选择的照片数量 log.logger.info("随机选择{}张照片".format(picked_count)) for index in random.sample(xrange(max_photo_count), picked_count): log.logger.info("选择第{}张照片".format(index + 1)) curr_photo_list[index].select() log.logger.info("验证该图片有没有被选中") self.assertTrue(curr_photo_list[index].is_selected(), "该图片没有被选中") log.logger.info("该图片已被选中") log.logger.info("验证已选中的图片的数目") self.assertEqual(str(picked_count), curr_gallery_window.selected_story_photo_count, "选择的图片数量不一致") curr_gallery_window.tap_story_continue_button() curr_story_edit_window = story_edit_window.StoryEditWindow( base_app) curr_story_edit_window.diary_cover_detail.input_diary_name( u'第一篇文章') curr_story_edit_window.diary_cover_detail.input_diary_beginning( u'文章开头') curr_story_edit_window.tap_preview_button() curr_story_preview_window = story_preview_window.StoryPreviewWindow( base_app) curr_story_preview_window.tap_next_button() curr_story_setting_window = story_setting_window.StorySettingWindow( base_app) curr_story_setting_window.tap_finish_button() curr_story_share_window = story_share_window.StoryShareWindow( base_app) self.assertTrue(curr_story_share_window.is_publish_success(), "发布日记未成功") status = curr_story_share_window.tap_close_button() self.assertTrue(status, "进入in主页失败") except Exception as exp: log.logger.error("发现异常, case:test_publish_story_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'publish_story', exp)
def test_topic_square_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_topic_square_operation Summary: 话题广场操作 我的话题-点击话题 分类话题-切换分类-点击话题 推荐话题-分页加载-点击话题 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity(base_app) curr_discover_activity.tap_hot_topic_icon() curr_topic_square_activity = topic_sqaure_activity.TopicSquareActivity(base_app) log.logger.info("点击我的tab") curr_topic_square_activity.tap_my_tab() my_topic_count = len(curr_topic_square_activity.my_topic_list) log.logger.info("我的话题数为{}个".format(my_topic_count)) index = random.randint(0, my_topic_count-1) log.logger.info("点击第{}个话题".format(index+1)) status = curr_topic_square_activity.my_topic_list[index].tap() self.assertTrue(status, "进入话题详情页失败", "热门话题-我的话题-进入话题详情页") action.back(activities.ActivityNames.TOPIC_SQUARE) log.logger.info("点击分类tab") curr_topic_square_activity.tap_category_tab() cate_count = len(curr_topic_square_activity.category_list) log.logger.info("话题类别数为{}个".format(cate_count)) self.assertTrue(status, "切换话题tab", "热门话题-点击分类tab") index = random.randint(0, cate_count-1) log.logger.info("点击第{}个话题类别".format(index + 1)) curr_topic_square_activity.category_list[index].tap(5) curr_topic = curr_topic_square_activity.topic_list[0] old_topic_name = curr_topic.topic_name log.logger.info("当前类别下第一个话题为\"{}\"".format(old_topic_name)) log.logger.info("切换话题分类, 获取新的类别") index = self._get_different_value(0, cate_count-1, index) log.logger.info("切换话题类别,点击第{}个话题类别".format(index + 1)) curr_topic_square_activity.category_list[index].tap(5) curr_topic = curr_topic_square_activity.topic_list[0] new_topic_name = curr_topic.topic_name log.logger.info("当前类别下第一个话题为\"{}\"".format(new_topic_name)) self.assertNotEqual(old_topic_name, new_topic_name, "话题类别未切换", "热门话题-分类话题-切换话题分类") topic_count = len(curr_topic_square_activity.topic_list) log.logger.info("\"{}\"话题数为{}个".format(new_topic_name, topic_count)) index = random.randint(0, topic_count - 1) log.logger.info("点击第{}个话题".format(index+1)) status = curr_topic_square_activity.topic_list[index].tap() self.assertTrue(status, "进入话题页失败", "热门话题-分类话题-点击话题") action.back(activities.ActivityNames.TOPIC_SQUARE) log.logger.info("点击推荐tab") curr_topic_square_activity.tap_recommend_tab() curr_topic_square_activity.swipe_up_entire_scroll_view() self.assertTrue(True, "点击推荐tab", "热门话题-推荐话题-分页加载") except Exception as exp: log.logger.error("发现异常, case:test_topic_square_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'topic_square', exp)
def test_friend_in_diary_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_friend_in_diary_operation Summary: 发现首页-》点击九宫格箭头-》分类-》达人分类操作->进入达人in记主页操作 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) curr_discover_activity.swipe_up_entire_scroll_view() log.logger.info("点击九宫格箭头跳转") status = curr_discover_activity.tap_head_bar_more() self.assertTrue(status, "进入全部分类页面失败") curr_cate_activity = all_category_activity.AllCategoryActivity( base_app) status = curr_cate_activity.tap_talent() self.assertTrue(status, "进入达人推荐页面失败") curr_talent_activity = talent_recommend_activity.TalentRecommendActivity( base_app) log.logger.info("点击推荐达人的头像") status = curr_talent_activity.talent_list[0].tap_avatar() self.assertTrue(status, "进入达人主页失败", "点击推荐达人头像") curr_personal_activity = personal_main_activity.PersonalMainActivity( base_app) log.logger.info("点击关注") status = curr_personal_activity.tap_follow_button() self.assertTrue(status, "关注对话框吊起失败", "在他人in记页点击关注达人") curr_follow_dialogue = curr_personal_activity.follow_dialogue curr_follow_dialogue.select_group('interest') # 选择订阅分类 curr_follow_dialogue.tap_ok_button() if curr_personal_activity.is_friends_recommend_exist(): # 如果出现好友推荐,则点击收起按钮 curr_personal_activity.tap_friends_pull_button() log.logger.info("进入更多页面") status = curr_personal_activity.tap_more_button() self.assertTrue(status, "进入更改页面失败", "进入他人in记资料更改页") curr_remark_activity = personal_remark_activity.PersonalRemarkActivity( base_app) log.logger.info("更换分组") status = curr_remark_activity.select_group('friends') self.assertTrue(status, "更换分组失败", "更换好友分组") log.logger.info("更换昵称") nick_name = 'nickname' curr_remark_activity.input_remark_name(nick_name) log.logger.info("点击头像") status = curr_remark_activity.tap_avatar() self.assertTrue(status, "点击头像失败", "资料更改页点击好友头像") action.back(activities.ActivityNames.REMARK) log.logger.info("点击完成") curr_remark_activity.tap_ok_button() log.logger.info("验证新更改的昵称") curr_username = curr_personal_activity.user_nickname self.assertEqual( curr_username, nick_name, "昵称更改失败,原昵称\"{}\",新昵称\"{}\"".format(curr_username, nick_name), "更改备注名") log.logger.info("验证完毕") log.logger.info("点击照片") status = curr_personal_activity.matrix_photo_album_list[0].tap() self.assertTrue(status, "进入图片详情页失败", "他人in记页点击照片") action.back(activities.ActivityNames.DIARY_INFO) log.logger.info("取消关注") curr_personal_activity.tap_unfollow_button() curr_personal_activity.tap_confirm_unfollow_button() self.assertEqual('+ 关注', curr_personal_activity.follow_button.text, "取消关注未成功", "他人in记页取消关注") except Exception as exp: log.logger.error("发现异常, case:test_friend_in_diary_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'friend_in_diary', exp)
def test_talent_operation(self): """ test_cases/test_topic_operations.py:TopicTestCase.test_talent_operation Summary: 发现首页-》点击九宫格箭头-》分类-》达人分类操作/点击头像/图片/关注 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_discover_activity = discover_tab_activity.DiscoverTabActivity( base_app) curr_discover_activity.swipe_up_entire_scroll_view() log.logger.info("点击九宫格箭头跳转") status = curr_discover_activity.tap_head_bar_more() self.assertTrue(status, "进入全部分类页面失败", "进入分类页") curr_cate_activity = all_category_activity.AllCategoryActivity( base_app) status = curr_cate_activity.tap_talent() self.assertTrue(status, "进入达人推荐页面失败", "进入推荐达人页") curr_talent_activity = talent_recommend_activity.TalentRecommendActivity( base_app) log.logger.info("点击切换达人分类") curr_talent_activity.category_list[1].tap() status = curr_talent_activity.wait_for_talent(6) self.assertTrue(status, "达人加载失败", "切换达人分类-第二类目") curr_talent_activity.category_list[3].tap() status = curr_talent_activity.wait_for_talent(6) self.assertTrue(status, "达人加载失败", "切换达人分类-第四类目") log.logger.info("点击达人图片") status = curr_talent_activity.talent_list[0].tap_image(0) self.assertTrue(status, "进入图片详情页失败", "点击达人图片") action.back(activities.ActivityNames.TALENT_RECOMMEND) log.logger.info("开始关注达人") status = curr_talent_activity.talent_list[1].tap_follow_button() self.assertTrue(status, "关注按钮没选中", "关注达人") log.logger.info("进入达人主页取消关注") log.logger.info("点击推荐达人的头像") status = curr_talent_activity.talent_list[1].tap_avatar() self.assertTrue(status, "进入达人主页失败", "点击达人头像") curr_personal_activity = personal_main_activity.PersonalMainActivity( base_app) curr_personal_activity.tap_unfollow_button() curr_personal_activity.tap_confirm_unfollow_button() self.assertEqual('+ 关注', curr_personal_activity.follow_button.text, "取消关注未成功", "取消关注达人") except Exception as exp: log.logger.error("发现异常, case:test_talent_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'test_talent', exp)
def test_publish_story_operation(self): """ test_cases/test_story_operations.py:StoryTestCase.test_publish_story_operation Summary: 发布故事集 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_gallery_activity = story_gallery_activity.StoryGalleryActivity( base_app) # 当前页可见的按日期划分的相册列表 curr_date_photo_albums = curr_gallery_activity.date_photo_albums # 为了排除底部相册集的干扰,这里选择第一个相册列表 album_index = 0 curr_photo_album_date, curr_photo_album = curr_date_photo_albums[ album_index] # 当前选择的相册内的照片列表 curr_photo_list = curr_photo_album[ curr_gallery_activity.STORY_PHOTO] # 相册集中的照片,为了排除底部四张照片被遮罩tab的干扰,最多选择前12张 max_photo_count = len( curr_photo_list) if len(curr_photo_list) < 12 else 12 picked_count = random.randint(1, max_photo_count) # 选择的照片数量 log.logger.info("随机选择{}相册中的{}张照片".format(curr_photo_album_date, picked_count)) for index in random.sample(xrange(max_photo_count), picked_count): log.logger.info("选择{}相册中的第{}张照片".format( curr_photo_album_date, index + 1)) curr_photo_list[index].select() log.logger.info("验证该图片有没有被选中") self.assertTrue( curr_photo_list[index].is_selected(), "该图片没有被选中", "故事集-{}相册第{}张照片选中检测".format(curr_photo_album_date, index + 1)) log.logger.info("该图片已被选中") log.logger.info("验证已选中的图片的数目") self.assertEqual(str(picked_count), curr_gallery_activity.selected_photo_count, "选择的图片数量不一致", "故事集-选中照片的数目检测") curr_gallery_activity.tap_story_next_step_button() curr_story_edit_activity = story_edit_activity.StoryEditActivity( base_app) curr_story_edit_activity.diary_cover_detail.input_diary_name( u'第一篇文章') curr_story_edit_activity.diary_cover_detail.input_diary_beginning( u'文章开头') curr_story_edit_activity.tap_preview_button() curr_story_preview_activity = story_preview_activity.StoryPreviewActivity( base_app) curr_story_preview_activity.tap_next_button() curr_story_setting_activity = story_setting_activity.StorySettingActivity( base_app) curr_story_setting_activity.tap_finish_button() curr_story_share_activity = story_share_activity.StoryShareActivity( base_app) self.assertTrue(curr_story_share_activity.is_publish_success(), "发布日记未成功", "故事集-发布故事集") status = curr_story_share_activity.tap_close_button() self.assertTrue(status, "进入in主页失败", "关闭刚发布的故事集") except Exception as exp: log.logger.error("发现异常, case:test_publish_story_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'publish_story', exp)
def test_focus_user_card_operation(self): """ test_cases/test_friends_operations.py:FocusTestCase.test_focus_user_card_operation Summary: 关注页用户卡片操作:点击头像-点击图片-点赞-取消点赞-评论 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_focus_activity = focus_tab_activity.FocusTabActivity(base_app) if curr_focus_activity.is_contact_friends_exisit(): log.logger.info("关闭通讯录好友提示") curr_focus_activity.tap_close_contact_button() curr_card_list = curr_focus_activity.card_list log.logger.info("对屏幕中第一个用户动态卡片进行处理") curr_card = curr_card_list[0] log.logger.info("点击头像") status = curr_card.tap_avatar() self.assertTrue(status, "进入用户in记页失败") action.back(activities.ActivityNames.IN_MAIN, 3) status = curr_card.tap_photo() self.assertTrue(status, "进入查看图片详情页失败", "关注页用户卡片点击照片") action.back(activities.ActivityNames.IN_MAIN, 3) curr_focus_activity.swipe_up_any_view(ratio=0.5) # 屏幕滑动,重新获取一次当前卡片 curr_card = curr_card_list[0] log.logger.info("点赞") status = curr_card.tap_zan() self.assertTrue(status, '点赞失败', "关注页用户卡片点赞") log.logger.info("取消点赞") status = curr_card.remove_zan() self.assertTrue(status, '点赞按钮没取消', "关注页用户卡片取消点赞") log.logger.info("评论照片") log.logger.info('点击评论按钮') curr_card.tap_comment() expected_words = u'评论' + unicode( str(random.random() * 10000)[:4], 'utf8') curr_focus_activity.send_words_box.input_words(expected_words) curr_focus_activity.send_words_box.tap_send_button() # 获取刚发送的文本,为评论列表的最后一行 log.logger.info("检查评论内容") actual_words = curr_card.comment_list[-1].text self.assertEqual(expected_words.encode('utf-8'), actual_words, "评论内容有误", "关注页用户卡片评论-评论内容") log.logger.info("评论内容检查完毕") log.logger.info("检查评论人") expected_user = self.config_model.get( 'account', 'user_name' + self.get_current_thread_number()) actual_user = curr_card.comment_user_list[-1].text self.assertEqual(expected_user, actual_user, "评论人有误", "关注页用户卡片评论-评论人") log.logger.info("评论人检查完毕") except Exception as exp: log.logger.error("发现异常, case:test_focus_user_card_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'focus_user_card', exp)
def test_publish_core_operation(self): """ test_cases/test_photo_operations.py:PhotoTestCase.test_publish_core_operation Summary: 选择图片-进入发布核心页-贴纸/滤镜/标签/玩字 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_gallery_activity = story_gallery_activity.StoryGalleryActivity(base_app) log.logger.info("切换一次底部tab,避免\"发布故事集\"的引导遮罩对选取图片的干扰") curr_gallery_activity.tap_story_tab() curr_gallery_activity.tap_photo_tab() photo_count = curr_gallery_activity.image_photo_enable_picked_count curr_photo_list = curr_gallery_activity.image_photo_list log.logger.info("随机选1张图片") # 选随机选择几张图片,为了排除底部遮罩tab的干扰,图片最多选择11张 max_pick_count = photo_count if photo_count < 11 else 11 index = random.randint(1, max_pick_count) log.logger.info("选择相册中的第{}张照片".format(index)) curr_photo_list[index-1].select() log.logger.info("验证该图片有没有被选中") self.assertEqual('1', curr_photo_list[index-1].check_value, "该图片没有被选中") log.logger.info("该图片已被选中") log.logger.info("验证已选中的图片的数目") self.assertEqual('1', curr_gallery_activity.selected_photo_count, "选择的图片数量不一致") curr_gallery_activity.tap_photo_next_step_button() curr_publish_core_activity = publish_core_activity.PublishCoreActivity(base_app) if curr_publish_core_activity.is_guide_mask_exist() or curr_publish_core_activity.is_sticker_mask_exist(): log.logger.info("存在引导遮罩,移除引导遮罩") curr_publish_core_activity.remove_guide_mask() log.logger.info("验证发布加工页的图片数") self.assertEqual(1, len(curr_publish_core_activity.photo_available_list), "发布加工页面图片数目不正确") # ***********进入贴纸商城检测 *************** log.logger.info("点击贴纸") status = curr_publish_core_activity.tap_paster_button() self.assertTrue(status, "进入贴纸商城失败", "进入贴纸商城") curr_paster_mall_activity = user_paster_activity.UserPasterActivity(base_app) curr_paster_mall_activity.tap_back_button(window=activities.ActivityNames.PUBLISH_CORE) # ***********滤镜检测********************* log.logger.info('点击滤镜') status = curr_publish_core_activity.tap_filter_button() self.assertTrue(status, "滤镜工具栏没有吊起", "滤镜工具栏吊起") status = curr_publish_core_activity.tap_beauty_button() self.assertTrue(status, "美颜强度选项没有吊起", "美颜强度栏吊起") level = random.randint(0, 3) log.logger.info("选择美颜强度级数{}".format(level)) curr_publish_core_activity.select_beauty_level(level) status = curr_publish_core_activity.tap_beauty_level() self.assertTrue(status, "美颜强度选项没有消失", "美颜强度栏消失") log.logger.info('将滤镜效果栏向左边滑动') curr_publish_core_activity.filter_bar.swipe_left_entire_scroll_view() log.logger.info('选择屏幕内第二个滤镜效果') curr_publish_core_activity.filter_effect_choice_list[1].select() self.assertTrue(curr_publish_core_activity.is_seek_bar_exist(), "滤镜效果调整框不存在", "滤镜效果调整栏检测") curr_publish_core_activity.filter_seek_bar.slide('right', 0.75) log.logger.info('将滤镜效果栏向右侧滑动,露出无滤镜效果选项') curr_publish_core_activity.filter_bar.swipe_right_entire_scroll_view() while not curr_publish_core_activity.is_no_filter_effect_displayed(): log.logger.info("无滤镜效果不在屏幕内,继续向右滑动") curr_publish_core_activity.filter_bar.swipe_right_entire_scroll_view() log.logger.info("选择无滤镜效果") curr_publish_core_activity.filter_effect_choice_list[0].select() self.assertTrue(curr_publish_core_activity.is_seek_bar_not_exist(), "滤镜效果调整框还存在", "滤镜效果栏取消检测") # ***********标签检测********************* log.logger.info('点击标签按钮,吊起标签遮罩') status = curr_publish_core_activity.tap_mark_tool() self.assertTrue(status, '吊起标签失败', "吊起标签") log.logger.info('点击文字标签') status = curr_publish_core_activity.tap_words_tag() self.assertTrue(status, "进入文字标签页失败", "玩字-进入文字标签页") curr_words_tag_activity = publish_words_tag_activity.PublishWordsTagActivity(base_app) curr_words_tag_activity.input_words(u'庐山升龙霸') curr_words_tag_activity.tap_add_button() self.assertTrue(curr_words_tag_activity.is_tag_added_successful(), '标签添加失败', "添加文字标签") # ***********玩字检测********************* log.logger.info("点击玩字按钮") status = curr_publish_core_activity.tap_character_button() self.assertTrue(status, '进入玩字页面失败', "进入玩字页") curr_words_art_activity = publish_words_art_activity.PublishWordsArtActivity(base_app) log.logger.info("点击风景tab") curr_words_art_activity.tab_bar.scenery_tab.tap() log.logger.info("选择第一张字点击") curr_words_art_activity.word_art_list[0].tap() status = curr_publish_core_activity.make_words_art_popup_appearance() self.assertTrue(status, '玩字遮罩未呼出', "吊起玩字遮罩") words_art_widget = bottom_popup_art_text_window.BottomPopupArtTextWindow(base_app) word_count = len(words_art_widget.words_available_list) log.logger.info("当前推荐的文字词语个数为{}".format(word_count)) index = random.randint(0, word_count - 1) log.logger.info("随机选择第{}个词语".format(index + 1)) words_art_widget.select_words_available(index) status = words_art_widget.words_length_check() self.assertTrue(status, '文字输入的字数计算错误', "玩字-选中给定字-玩字输入字数量检测") words_art_widget.input_words(u'中秋月圆') status = words_art_widget.words_length_check() self.assertTrue(status, '文字输入的字数计算错误', "玩字-输入自定义字-丸子输入字数检测") words_art_widget.tap_use_button() curr_publish_core_activity.tap_finish_button() curr_publish_activity = publish_activity.PublishActivity(base_app) log.logger.info("验证发布的图片数量") self.assertEqual(1, len(curr_publish_activity.photo_available_list), "发布贴纸数量不正确", "发布特效照片-贴纸数量检测") curr_publish_activity.input_words(u"测试图片发布") curr_publish_activity.tap_publish_button() log.logger.info("开始验证发布情况") status = curr_publish_activity.is_publish_successful() self.assertTrue(status, "发布失败", "发布特效照片-发布成功") except Exception as exp: log.logger.error("发现异常, case:test_publish_core_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'take_publish_core', exp)
def test_focus_friend_photo_operation(self): """ test_cases/test_friends_operations.py:FocusTestCase.test_focus_friend_photo_operation Summary: 发现-进入好友图片详情页-图片详情页操作-点击图片/头像/点赞/评论 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) action = mobile_keyevent_action.KeyEventAction(self.get_driver()) try: curr_focus_activity = focus_tab_activity.FocusTabActivity(base_app) if curr_focus_activity.is_contact_friends_exisit(): log.logger.info("关闭通讯录好友提示") curr_focus_activity.tap_close_contact_button() curr_card_list = curr_focus_activity.card_list log.logger.info("点击首张卡片头部栏跳转") status = curr_card_list[0].tap_header_bar() self.assertTrue(status, "进入好友图片页失败", "关注页人物卡片点击头部栏") curr_photo_activity = friend_photo_album_detail_activity.FriendPhotoDetailActivity( base_app) log.logger.info("点击图片") status = curr_photo_activity.tap_photo(0) self.assertTrue(status, "进入图片详情页失败", "关注-图片详情页点击图片") action.back(activities.ActivityNames.FRIEND_PHOTO_DETAIL) status = curr_photo_activity.tap_tag(0) self.assertTrue(status, "进入标签话题页失败", "关注-图片详情页点击标签") action.back(activities.ActivityNames.FRIEND_PHOTO_DETAIL) curr_photo_activity.swipe_up_any_view(0.4) status = curr_photo_activity.tap_zan() self.assertTrue(status, "点赞失败", "关注-图片详情页点赞") status = curr_photo_activity.remove_zan() self.assertTrue(status, "取消点赞失败", "关注-图片详情页取消点赞") status = curr_photo_activity.tap_avatar() self.assertTrue(status, "进入个人详情页失败", "关注-图片详情页点击头像") action.back(activities.ActivityNames.FRIEND_PHOTO_DETAIL) log.logger.info('发表评论') expected_words = u'评论' + unicode( str(random.random() * 10000)[:4], 'utf8') curr_photo_activity.input_comment(expected_words) curr_photo_activity.tap_send_button() log.logger.info("检查评论内容") curr_photo_activity.swipe_up_entire_scroll_view() actual_words = curr_photo_activity.latest_comment_value self.assertEqual(expected_words.encode('utf-8'), actual_words, "评论内容有误", "关注-图片详情页评论内容") log.logger.info("评论内容检查完毕") log.logger.info("检查评论人") expected_user = self.config_model.get( 'account', 'user_name' + self.get_current_thread_number()) actual_user = curr_photo_activity.latest_comment_user self.assertEqual(expected_user, actual_user, "评论人有误", "关注-图片详情页评论人") log.logger.info("评论人检查完毕") except Exception as exp: log.logger.error( "发现异常, case:test_focus_friend_photo_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'friend_photo', exp)
def test_publish_photo_operation(self): """ test_cases/test_photo_operations.py:PhotoTestCase.test_publish_photo_operation Summary: 发布图片 """ base_app = base_frame_view.BaseFrameView(self.get_driver()) try: curr_gallery_activity = story_gallery_activity.StoryGalleryActivity(base_app) log.logger.info("切换一次底部tab,避免\"发布故事集\"的引导遮罩对选取图片的干扰") curr_gallery_activity.tap_story_tab() curr_gallery_activity.tap_photo_tab() # 当前图片tab下的图片列表 curr_photo_list = curr_gallery_activity.image_photo_list photo_count = curr_gallery_activity.image_photo_enable_picked_count picked_count = 3 log.logger.info("随机选{}张图片".format(picked_count)) # 选随机选择几张图片,为了排除底部遮罩tab的干扰,图片最多选择11张 max_pick_count = photo_count if photo_count < 11 else 11 for index, photo_index in enumerate(random.sample(xrange(max_pick_count), picked_count)): log.logger.info("选择第{}张照片,相册中的第{}张照片".format(index+1, photo_index+1)) curr_photo_list[photo_index].select() log.logger.info("验证该图片有没有被选中") self.assertEqual(str(index+1), curr_photo_list[photo_index].check_value, "该图片没有被选中", "发布图片-第{}张图片选中序号{}检测".format(photo_index+1, index+1)) log.logger.info("该图片已被选中") log.logger.info("验证已选中的图片的数目") self.assertEqual(str(picked_count), curr_gallery_activity.selected_photo_count, "选择的图片数量不一致", "发布图片-选中图片数目检测") curr_gallery_activity.tap_photo_next_step_button() curr_publish_core_activity = publish_core_activity.PublishCoreActivity(base_app) if curr_publish_core_activity.is_guide_mask_exist() or curr_publish_core_activity.is_sticker_mask_exist(): log.logger.info("存在引导遮罩,移除引导遮罩") curr_publish_core_activity.remove_guide_mask() log.logger.info("验证发布加工页的图片数") self.assertEqual(picked_count, len(curr_publish_core_activity.photo_available_list), "发布加工页面图片数目不正确", "发布图片-发布加工页图片数目检测") # ***********标签检测********************* log.logger.info('点击标签按钮,吊起标签遮罩') status = curr_publish_core_activity.tap_mark_tool() self.assertTrue(status, '吊起标签失败') log.logger.info('点击文字标签') status = curr_publish_core_activity.tap_words_tag() self.assertTrue(status, "进入文字标签页失败") curr_words_tag_activity = publish_words_tag_activity.PublishWordsTagActivity(base_app) curr_words_tag_activity.input_words(u'庐山升龙霸') curr_words_tag_activity.tap_add_button() self.assertTrue(curr_words_tag_activity.is_tag_added_successful(), '标签添加失败', "添加文字标签") curr_publish_core_activity.tap_finish_button() curr_publish_activity = publish_activity.PublishActivity(base_app) log.logger.info("验证发布的图片数量") self.assertEqual(picked_count, len(curr_publish_activity.photo_available_list), "发布贴纸数量不正确", "发布页图片数目检测") log.logger.info("发布页点击返回按钮") status = curr_publish_activity.tap_back_button() self.assertTrue(status, "回到发布加工页失败") curr_publish_core_activity.tap_finish_button() curr_publish_activity.input_words(u"测试图片发布") curr_publish_activity.tap_publish_button() log.logger.info("开始验证发布情况") status = curr_publish_activity.is_publish_successful() self.assertTrue(status, "发布失败", "发布图片") except Exception as exp: log.logger.error("发现异常, case:test_publish_photo_operation执行失败") self.raise_exp_and_save_screen_shot(base_app, 'publish_photo', exp)