def test_invest_2_success(self): logger.info("用例-正常场景-投资成功-使用到的测试数据") #步骤-投资操作-投资页面 #滚动条 ele = self.driver.find_element_by_xpath( '//a[@href="/Member/index.html"]') self.driver.execute_script("arguments[0].scrollIntoView();", ele) #点击我的账户 InvestPage(self.driver).click_my_account() #获取可用余额文本值 PersonalPage(self.driver).get_old_available_balance() #点击首页 PersonalPage(self.driver).click_index() #点击抢投标 IndexPage(self.driver).select_frist_bid() #滚动条 ele = self.driver.find_element_by_xpath( '//button[@class="btn btn-special height_style"]') self.driver.execute_script("arguments[0].scrollIntoView(false);", ele) # 输入金额 InvestPage(self.driver).bid_amount(invest_d.success_data["amount"]) # 点击投标 InvestPage(self.driver).click_bid() # # 点击查看并激活 # InvestPage(self.driver).click_check_activate_button() # # 获取新的可用余额文本值 # PersonalPage(self.driver).get_new_available_balance() #断言-判断check是否相等 self.assertEqual( invest_d.success_data["check"], InvestPage(self.driver).get_success_msg_from_pageCenter())
def setUpClass(cls): #日志 logger.info("准备测试前置") # 前置 - 启动浏览器,打开网页 cls.driver = webdriver.Chrome() cls.driver.get('{}/Index/login.html'.format(cd.base_url)) cls.driver.maximize_window()
def test_invest_1_failed_by_wrong_datas(self, data): logger.info("异常用例-按钮文本错误信息-使用到的测试用例") #步骤 #输入金额 InvestPage(self.driver).bid_amount(data["amount"]) #断言 self.assertEqual(data["check"], InvestPage(self.driver).get_error_msg_from_button())
def setUpClass(cls): # 日志 logger.info("准备测试前置") # 前置 - 启动浏览器,打开网页 cls.driver = webdriver.Chrome() cls.driver.get('{}/Index/login.html'.format(cd.base_url)) cls.driver.maximize_window() LoginPage(cls.driver).login(ld.success_data["user"], ld.success_data["passwd"])
def test_login_2_success(self): logger.info("用例-正常场景-登录成功-使用到的测试数据") #步骤 - 登录操作 - 登录页面 LoginPage(self.driver).login(ld.success_data["user"],ld.success_data["passwd"]) #测试对象+测试数据 #断言 - 页面是否存在一个像我的账户之类的元素 self.assertTrue(IndexPage(self.driver).check_nick_name_exists()) #测试对象+测试数据 #断言 - url跳转 #获取当前url网址 是 self.driver.current_url self.assertEqual(self.driver.current_url,ld.success_data["check"]) #测试对象+测试数据
def test_invest_0_failed_by_wrong_datas(self, data): logger.info("异常用例-弹框错误信息-使用到的测试用例") #步骤 # 输入金额 InvestPage(self.driver).bid_amount(data["amount"]) # 点击投标 InvestPage(self.driver).click_bid() #断言 self.assertEqual( data["check"], InvestPage(self.driver).get_error_msg_from_pageCenter())
def save_web_screenshot(self,img_doc): # 截图 - 哪一个用例,哪一个页面,哪一步操作导致的失败 + 当前时间 # 页面_功能_时间.png now = time.strftime("%Y-%m-%d %H_%M_%S") filepath = "{}_{}.png.".format(img_doc,now) try: self.driver.save_screenshot(screenshot_dir + "/" + filepath) logger.info("网页截图成功,图片存储在:{}".format(screenshot_dir + "/" + filepath)) except: logger.info("网页截屏失败!") raise
def test_index_success(self): logger.info("用例-正常场景-点击第一个投标-使用到的测试数据") #步骤-首页 - 点击我的账户 # IndexPage(self.driver).click_my_account() # #步骤-个人页面 - 获取可用余额 # PersonalPage(self.driver).get_old_available_balance() # #步骤-个人页面 - 点击首页 # PersonalPage(self.driver).click_index() #步骤-首页 - 选取页面标进行投资 IndexPage(self.driver).select_frist_bid() #断言-页面是否存在融资投标这个元素 self.assertTrue(InvestPage(self.driver).check_element_exists())
def setUpClass(cls): logger.info("准备测试前置") #启动浏览器 cls.driver = webdriver.Chrome() cls.driver.get('{}/Index/login.html'.format(cd.base_url)) cls.driver.maximize_window() LoginPage(cls.driver).login(ld.success_data["user"], ld.success_data["passwd"]) IndexPage(cls.driver).select_frist_bid() # 滚动条-将投标按钮置于页面底端 ele = cls.driver.find_element_by_xpath( '//button[@class="btn btn-special height_style"]') cls.driver.execute_script("arguments[0].scrollIntoView(false);", ele)
def input_text(self,loc,img_doc,*args): #1.等待元素可见 self.wait_eleVisible(loc,img_doc) #2.找元素 ele = self.get_element(loc,img_doc) #改动 #3.再操作 logger.info("给元素{}输入文本内容:{}".format(loc,args)) try: ele.send_keys(*args) except: # 日志 logger.info("元素输入操作失败") # 截图 self.save_web_screenshot(img_doc) raise
def get_element_attribute(self,loc,attr_name,img_doc): # 1.等待元素可见 self.wait_eleVisible(loc, img_doc) #2.找元素 ele = self.get_element(loc,img_doc) #获取属性 try: attr_value = ele.get_attribute(attr_name) logger.info("获取元素{}的属性{}值为:{}".format(loc, attr_name,attr_value)) return attr_value except: # 日志 logger.info("获取元素属性值操作失败") # 截图 self.save_web_screenshot(img_doc) raise
def get_element_text(self,loc,img_doc): # 1.等待元素可见 self.wait_eleVisible(loc, img_doc) # 2.找元素 ele = self.get_element(loc,img_doc) #获取文本值 try: text = ele.text logger.info("获取元素{}的文本值为:{}".format(loc,text)) return text except: #日志 logger.info("获取元素文本值操作失败") #截图 self.save_web_screenshot(img_doc) raise
def get_element(self,loc,img_doc=""): """ :param loc:元素定位,以元组形式。(定位类型,定位时间) :param img_doc:截图的说明。例如:登录页面_输入用户名 :return:WebElement对象 """ logger.info("查找{}中的{}元素".format(img_doc,loc)) try: ele = self.driver.find_element(*loc) return ele except: #日志 logger.info("查找元素失败") #截图 self.save_web_screenshot(img_doc) raise
def wait_eleVisible(self,loc,img_doc="",timeout=30,frequency=0.5): logger.info("等待元素 {} 可见".format(loc)) #将logging改成logger try: #起始等待的时间 datetime start = datetime.datetime.now() WebDriverWait(self.driver,timeout,frequency).until(EC.visibility_of_element_located(loc)) #结束等待的时间 end = datetime.datetime.now() logger.info("开始等待时间:{},结束等待时间:{},等待时长为:{}" .format(start,end,end-start)) except: #日志 logger.exception("等待元素可见失败") # 截图 - 哪一个用例,哪一个页面,哪一步操作导致的失败 + 当前时间 self.save_web_screenshot(img_doc) raise
def get_alert_text(self,loc,img_doc,timeout=30,frequency=0.1): #1.点击元素,导致弹出框出现 self.click_element(loc,img_doc) #2.等待弹出框出现 WebDriverWait(self.driver,timeout,frequency).until(EC.alert_is_present()) #3.切换,并用alert接收 alert = self.driver.switch_to.alert time.sleep(3) #获取弹出框文本值 try: text = alert.text logger.info("获取弹出框文本值为:{}".format(text)) return text alert.accept() time.sleep(2) except: # 日志 logger.info("获取弹出框文本值操作失败") # 截图 self.save_web_screenshot(img_doc) raise
def click_element(self,loc,img_doc,timeout=30,frequency=0.5): """ 实现了等待元素可见,找元素,然后再去点击元素 :param loc:元素定位,以元组形式。(定位类型,定位时间) :param img_doc:截图的说明。例如:登录页面_输入用户名 :param timeout:时间 :param frequency:频率 :return: """ #1.等待元素可见 self.wait_eleVisible(loc,img_doc,timeout,frequency) #2.找元素 ele = self.get_element(loc,img_doc) #改动 #3.再操作 logger.info("点击元素{}".format(loc)) try: ele.click() except: # 日志 logger.info("点击元素失败") # 截图 self.save_web_screenshot(img_doc) raise
def tearDownClass(cls): # 日志 logger.info("准备测试后置") cls.driver.quit()
def test_login_1_failed_by_fail_datas(self,data): logger.info("异常用例-页面中心错误信息-使用到的测试用例") # 步骤 LoginPage(self.driver).login(data["user"],data["passwd"]) #断言 self.assertEqual(data["check"],LoginPage(self.driver).get_error_msg_from_pageCenter())