class TestMinePage: def setup(self): self.driver = get_driver() self.mine_page = MinePage(self.driver) self.mine_page.switch_to_mine_page() def teardown(self): self.driver.quit() @allure.step(title='测试登录的脚本') @pytest.mark.parametrize('args', data_with_key('test_login')) def test_login(self, args): username = args['username'] password = args['password'] toast = args['toast'] screenshot_name = username + '_login' # 输入用户名 allure.attach('', '输入用户名') self.login_page.input_username(username) # 输入密码 allure.attach('', '输入密码') self.login_page.input_password(password) # 点击登录按钮 allure.attach('', '点击登录按钮') self.login_page.click_login() # 判断是否登录成功 allure.attach(toast, '判断是否登录成功') res = self.login_page.is_toast_exist(toast, True, screenshot_name) # 上传截图 allure.attach( open('screen/' + screenshot_name + '.png', 'rb').read(), '截图', allure.attachment_type.PNG) assert res
def test_shopping_success(self): tel = '13981401921' password = '******' indexPage = IndexPage(self.driver) indexPage.open("http://172.18.0.50:9003/") sleep(3) indexPage.mine_button() #点击我的 minePage = MinePage(self.driver) minePage.login_button() loginPage = LoginPage(self.driver) loginPage.tel_input(tel) loginPage.pwd_input(password) loginPage.submit_button() sleep(3)
class MineHandle: def __init__(self, driver): self.mine_page = MinePage(driver) def click_tab_mine(self): """ 根据元素点击底部栏"我的"按钮 """ element = self.mine_page.get_tab_mine() if element is None: return element.click() def click_login_entrance(self): """ 根据元素点击"去登陆"按钮 """ self.mine_page.get_login_entrance().click() def click_mine_req_entranc(self): """ 根据元素点击"我的需求"按钮 """ self.mine_page.get_mine_req_entrance().click() def click_back(self): """ 根据元素点击"返回"按钮 """ self.mine_page.get_back_button().click()
def mine_page(self): """我的页面""" return MinePage(self.driver)
def mine_button(self): return MinePage(self.driver)
def __init__(self, driver): self.mine_page = MinePage(driver) self.ea = ElementAction(driver)
class MineHandle: """操作我的页面的元素""" def __init__(self, driver): self.mine_page = MinePage(driver) self.ea = ElementAction(driver) def click_mine_tab_element(self): """点击我的tab元素""" self.ea.click(self.mine_page.get_mine_tab_element()) def click_user_image_element(self): """点击头像元素""" self.ea.click(self.mine_page.get_user_image_element()) def get_user_name(self): """获取用户名""" return self.ea.get_text(self.mine_page.get_user_name_element()) def get_login_title(self): """获取登录文案""" return self.ea.get_text(self.mine_page.get_login_title_element()) def click_friend_btn_element(self): """点击好友元素""" self.ea.click(self.mine_page.get_friend_btn_element()) def click_collect_btn_element(self): """点击收藏元素""" self.ea.click(self.mine_page.get_collect_btn_element()) def get_collect_count(self): """获取收藏数""" self.ea.get_text(self.mine_page.get_collect_count_element()) def click_notice_btn_element(self): """点击消息元素""" self.ea.click(self.mine_page.get_notice_btn_element()) def click_sign_btn_element(self): """点击签到元素""" self.ea.click(self.mine_page.get_sign_btn_element()) def click_onePrice_btn_element(self): """点击一元购课元素""" self.ea.click(self.mine_page.get_onePrice_btn_element()) def click_myCourse_btn_element(self): """点击我的课程元素""" self.ea.click(self.mine_page.get_myCourse_btn_element()) def click_inviteReward_btn_element(self): """点击邀请奖励元素""" self.ea.click(self.mine_page.get_inviteReward_btn_element()) def click_welfare_btn_element(self): """点击福利中心元素""" self.ea.click(self.mine_page.get_welfare_btn_element()) def click_ad_btn_element(self): """点击广告元素""" self.ea.click(self.mine_page.get_ad_btn_element()) def click_childInfo_btn_element(self): """点击孩子档案元素""" self.ea.click(self.mine_page.get_childInfo_btn_element()) def get_childInfoIntroduce(self): """获取孩子档案""" return self.ea.get_text( self.mine_page.get_childInfoIntroduce_element()) def click_showcaseView_btn_element(self): """点击我的发表元素""" self.ea.click(self.mine_page.get_showcaseView_btn_element()) def click_courseOrder_btn_element(self): """点击课程订单元素""" self.ea.click(self.mine_page.get_courseOrder_btn_element()) def get_orderIntroduce(self): """获取课程订单介绍""" return self.ea.get_text(self.mine_page.get_orderIntroduce_element()) def click_growthRecord_btn_element(self): """点击成长记录元素""" self.ea.click(self.mine_page.get_growthRecord_btn_element()) def get_growthRecordNewFlag(self): """获取成长记录NEW""" return self.ea.get_text( self.mine_page.get_growthRecordNewFlag_element()) def get_growthRecordIntroduce(self): """获取成长记录介绍""" return self.ea.get_text( self.mine_page.get_growthRecordIntroduce_element()) def click_browseHistory_btn_element(self): """点击浏览记录元素""" self.ea.click(self.mine_page.get_browseHistory_btn_element()) def click_historyPush_btn_element(self): """点击历史推送元素""" self.ea.click(self.mine_page.get_historyPush_btn_element()) def get_historyPushIntroduce(self): """获取历史推送介绍""" return self.ea.get_text( self.mine_page.get_historyPushIntroduce_element()) def click_help_feedback_btn_element(self): """点击帮助与反馈元素""" self.ea.click(self.mine_page.get_help_feedback_btn_element()) def click_setting_btn_element(self): """点击账号与设置元素""" self.ea.click(self.mine_page.get_setting_btn_element())
def setup(self): self.driver = get_driver() self.mine_page = MinePage(self.driver) self.mine_page.switch_to_mine_page()
class MineBusiness: """我的模块业务交互""" def __init__(self, driver): self.mp = MinePage(driver) self.mh = MineHandle(driver) self.lp = LoginPage(driver) self.lh = LoginHandle(driver) self.ea = ElementAction(driver) def check_user_isTourist(self): """检查用户身份""" if self.mh.get_user_name() == '游客': return True else: return False def go_mine(self): """成功进入我的页面&验证""" self.mh.click_mine_tab_element() if self.check_user_isTourist(): if self.mh.get_login_title() == '登录' and self.ea.element_exist( self.mp.get_user_image_element()) and self.ea.element_exist( self.mp.get_sign_btn_element()): return True else: return False else: try: self.mp.get_login_title_element() == '登录' self.mh.get_collect_count() == '1' return False except: self.mh.get_collect_count() == '1' return True def user_image(self): """我的页面头像点击跳转""" if self.check_user_isTourist(): self.mh.click_user_image_element() if self.lh.get_login_title() == "手机号登录" and self.ea.element_exist( self.lp.get_qq_btn_element()) and self.ea.element_exist( self.lp.get_weibo_btn_element()) and self.ea.element_exist(self.lp.get_loginPage_wechat_element()): return True else: return False else: user_name = self.mh.get_user_name() self.mh.click_user_image_element() if self.ea.get_text(self.mp.get_userName_element()) == user_name and self.ea.element_exist( self.mp.get_updatePersonal_element()) and len( self.ea.get_text(self.mp.get_threadName_element())) > 0: return True else: return False def friend(self): """我的页面好友按钮点击跳转""" if self.check_user_isTourist(): self.mh.click_friend_btn_element() if self.ea.element_exist(self.lp.get_login_panel_element()) and self.ea.element_exist( self.lp.get_register_btn_element()): return True else: return False else: self.mh.click_friend_btn_element() if self.ea.element_exist(self.mp.get_agency_element()) and self.ea.element_exist( self.mp.get_friend_title_element()) and self.ea.element_exist( self.mp.get_recommend_friend_element()): return True else: return False def collect(self): """我的页面收藏按钮点击跳转""" if self.check_user_isTourist(): self.mh.click_collect_btn_element() if self.ea.element_exist(self.lp.get_login_panel_element()) and self.ea.element_exist( self.lp.get_register_btn_element()): return True else: return False else: self.mh.click_collect_btn_element() if self.ea.element_exist(self.mp.get_collect_time_element()) and self.ea.element_exist( self.mp.get_collect_title_element()): return True else: return False def notice(self): """我的页面消息按钮点击跳转""" self.mh.click_notice_btn_element() if self.ea.element_exist(self.mp.get_notice_sendLetter_element()) and self.ea.element_exist( self.mp.get_notice_1_element()) and self.ea.element_exist(self.mp.get_notice_bang_element()): return True else: return False def login_pass(self): """成功登录 1、以游客判断登录状态,如果是游客身份 2、点击我的头像,进入手机号登录页面 3、输入手机号,点击发送验证码 4、输入验证码页面输入验证码点击登录 5、再次以是否为游客判断是否登录成功 """ if self.mh.get_user_name == '游客': self.mh.click_user_image_element() def test_loginRegister_panel(self): """测试未登录时的登录注册弹框""" flag = False el_lists = [ self.mp.get_friend_btn_element(), self.mp.get_collect_btn_element(), self.mp.get_sign_btn_element(), self.mp.get_childInfo_btn_element(), self.mp.get_showcaseView_btn_element(), self.mp.get_courseOrder_btn_element() ] if self.check_user_isTourist(): for i in el_lists: self.ea.click(i) if self.ea.element_exist(self.lp.get_login_panel_element()): flag = True self.lh.click_close_btn() else: flag = False break return flag def growthRecord(self): """未登录测试点击成长记录是否有登录注册弹框""" self.ea.click(self.mp.get_growthRecord_btn_element()) if self.ea.element_exist(self.lp.get_login_panel_element()): self.lh.click_close_btn() return True else: return False def aa(self): self.mh.click_user_image_element()
def goto_mine_page(self): self.find(self._mine_button).click() return MinePage()
def login_member(self): return MinePage(self.driver)
def local_by_log(self, func): by = MinePage(func)[1][0] local = func[1][0] logger.info(str(by) + "定位,操作元素:" + local)
def __init__(self, driver): self.get_by_local = GetByLocal(driver) self.mine_handle = MineHandle(driver) self.mine_page = MinePage(driver)
def __init__(self, driver): self.mp = MinePage(driver) self.mh = MineHandle(driver) self.lp = LoginPage(driver) self.lh = LoginHandle(driver) self.ea = ElementAction(driver)
def __init__(self, driver): self.mine_page = MinePage(driver)
def mine_page(self): return MinePage(self.driver)
def test_add_adress_case(self): """添加地址""" name = "leo" tel = "18227589708" city = "成都市" address = "锦江区东方广场c座" doorplate = "7楼" hm = HomePage(self.driver) hm.click(hm.classify_tab_loc) # 点击分类标签 cifp = ClassifyPage(self.driver) # 实例化商品分类页 cifp.click(cifp.search_text_loc) # 点击搜索框 cifp.send_keys(cifp.search_view_loc, "牛奶") # 输入牛奶 cifp.click(cifp.suggest_contentt_loc) # 点击特仑苏牛奶 gls = guess_like_shop(self.driver, "特仑苏纯牛奶", cifp.result_recycler_loc) # 选择包含特仑苏纯牛奶的商品 spcp = ShoppingCartPage(self.driver) # 实例化购物车页面 cifp.click(cifp.buy_now_loc, gls) # 点击需要买的商品 cifp.click(cifp.cart_view_loc) # 跳转购物车页面 try: spcp.click(spcp.check_out_loc) # 点击去结算 except Exception: spcp.click(spcp.close_btn_new_loc) # 如果有新人专享关闭新人专享 spcp.click(spcp.check_out_loc) # 点击去结算 odfp = OrderFillPage(self.driver) #实例化结算页面 try: odfp.click(odfp.address_lable_loc) #点击去填写地址 except Exception: odfp.click(odfp.redemption_give_up_loc) #放弃换购 odfp.click(odfp.address_lable_loc) #点击去填写地址 aap = AdressAddPage(self.driver) #实例化填写地址页面 aap.click(aap.edit_address_receiver_loc) aap.send_keys(aap.edit_address_receiver_loc, name) #填写收件人姓名 aap.click(aap.sex_sir_loc) #性别选男 aap.click(aap.edit_address_tel_loc) aap.send_keys(aap.edit_address_tel_loc, tel) #填写电话号码 aap.click(aap.edit_detail_address_loc) #点击填写地址 nadp = NewAddAdressPage(self.driver) #实例化新加地址页面 nadp.click(nadp.entrance_choose_city_loc) #点击搜索框旁边城市 cocp = ChooseCityPage(self.driver) #实例化选择城市 cocp.click(cocp.search_address_input_city_loc) #点击一下城市输入框 cocp.send_keys(cocp.search_address_input_city_loc, city) #输入成都市 cocp.click(cocp.click_input_city_loc) #点击输入的城市成都市 nadp.click(nadp.search_address_input_loc) nadp.send_keys(nadp.search_address_input_loc, address) #输入锦江区东方广场c座 nadp.click(nadp.choose_input_address_loc) #点击输入的地址 aap.click(aap.edit_doorplate_loc) aap.send_keys(aap.edit_doorplate_loc, doorplate) #输入门牌号 aap.click(aap.home_address_tags_loc) #选择家标签 aap.click(aap.save_address_loc) #保存地址 self.assertEqual( odfp.text(odfp.address_detail_loc).strip(), address + doorplate) #断言 odfp.click(odfp.go_back_shopping_cart_loc) #返回购物车 spcp.click(spcp.delete_the_goods_loc) #点击删除 spcp.click(spcp.ensure_delete_the_goods_loc) #确认删除 spcp.click(spcp.mine_tab_loc) #去我的 mp = MinePage(self.driver) #实例化我的页面 mp.to_up() #向上滑 mp.click(mp.shipping_address_loc) #点击收货地址 esap = EditShippingAddressPage(self.driver) #实例化编辑地址 esap.click(esap.edit_shipping_address_loc) #点击编辑 esap.click(esap.delete_address_loc) #点击删除