コード例 #1
0
 def get_window_url(self, img_doc):
     do_log.info("获取当前窗口url")
     try:
         url = self.driver.current_url
     except:
         do_log.error("获取当前窗口url失败!!!".format(img_doc))
         self.save_screenshot(img_doc)
         raise
     else:
         return url
コード例 #2
0
ファイル: basepage.py プロジェクト: luomabanxia/My_Test
 def save_page_shot(self, img_doc):
     """
     保存截图封装
     :param img_doc:
     :return:
     """
     shot_name = os.path.join(SHOT_PATH, img_doc) + "_" + \
                 datetime.strftime(datetime.now(), '%Y%m%d%H%M%S') + ".png"
     try:
         self.driver.save_screenshot(shot_name)
     except AssertionError as e:
         do_log.error("保存截图失败{}".format(e))
     else:
         do_log.info("保存截图成功")
コード例 #3
0
 def input_text(self, loc, text, img_doc, timeout=10, poll_frequency=0.5):
     self.wait_element_visible(loc,
                               img_doc,
                               timeout=timeout,
                               poll_frequency=poll_frequency)
     ele = self.get_element(loc, img_doc)
     do_log.info("在{}元素{}中输入文本{}!".format(img_doc, loc, text))
     try:
         ele.send_keys(text)
     except:
         # 异常截图 - 通过截图名称,知道是哪个页面或者哪个模块出错了
         # 异常日志捕获
         do_log.error("在{}中,元素{}输入文本{}失败!!!".format(img_doc, loc, text))
         self.save_screenshot(img_doc)
         raise
コード例 #4
0
 def test_enter_classroom(self, setup):
     do_log.info("----------进入班级用例开始执行----------")
     ClassroomPage(setup).enter_classroom()
     time.sleep(5)
     file_name = os.path.join(
         PAGESHOTS_DIR,
         f"加入课程_{datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')}.png")
     try:
         assert WebClassPage(setup).check_ele()
         assert setup.current_url == "https://www.ketangpai.com/Interact/index/courseid/MDAwMDAwMDAwMLR2vd6Gz8mw.html"
     except:
         setup.save_screenshot(file_name)
         do_log.error(f"用例执行失败,截图为:{file_name}")
     else:
         do_log.info("----------进入班级用例执行成功----------")
コード例 #5
0
 def test_03_exit_class_success(self, init_driver):
     do_log.info("-------------退课用例开始执行----------------")
     classroom_page.ClassroomPage(init_driver).exit_web_class(password)
     show_tip_text = classroom_page.ClassroomPage(
         init_driver).get_show_tip_text()
     file_name = os.path.join(
         PAGESHOTS_DIR,
         f"加入课程_{datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')}.png")
     try:
         assert show_tip_text == "课程退课成功"
     except:
         init_driver.save_screenshot(file_name)
         do_log.error(f"退课用例执行失败,截图:{file_name}")
     else:
         do_log.info("-------------退课用例执行完成----------------")
コード例 #6
0
 def wait_element_invisible(self,
                            loc,
                            img_doc,
                            timeout=10,
                            poll_frequency=0.5):
     do_log.info("判断元素是否消失!!!")
     try:
         wait = WebDriverWait(self.driver,
                              timeout=timeout,
                              poll_frequency=poll_frequency)
         wait.until(EC.invisibility_of_element_located(loc))
     except:
         do_log.error("元素{}仍存在!!!".format(loc))
         self.save_screenshot(img_doc)
         return True
     return False
コード例 #7
0
 def get_element_text(self, loc, img_doc, timeout=10, poll_frequency=0.5):
     self.wait_page_contains_element(loc,
                                     img_doc,
                                     timeout=timeout,
                                     poll_frequency=poll_frequency)
     ele = self.get_element(loc, img_doc)
     do_log.info("在{}中获取元素{}的文本内容".format(img_doc, loc))
     try:
         text = ele.text
     except:
         do_log.error("在{}中获取元素{}的文本内容失败!!!".format(img_doc, loc))
         self.save_screenshot(img_doc)
         raise
     else:
         do_log.info("在{}中获取元素{}的文本内容为:{}".format(img_doc, loc, text))
         return text
コード例 #8
0
 def click_element(self, loc, img_doc, timeout=10, poll_frequency=0.5):
     # 元素可见、找到元素
     self.wait_element_visible(loc,
                               img_doc,
                               timeout=timeout,
                               poll_frequency=poll_frequency)
     ele = self.get_element(loc, img_doc)
     do_log.info("在{}点击元素{}!".format(img_doc, loc))
     try:
         ele.click()
     except:
         # 异常截图 - 通过截图名称,知道是哪个页面或者哪个模块出错了
         # 异常日志捕获
         do_log.error("元素点击{}失败!!!".format(loc))
         self.save_screenshot(img_doc)
         raise
コード例 #9
0
ファイル: basepage.py プロジェクト: luomabanxia/My_Test
 def get_element(self, loc, img_doc):
     """
     查找元素
     :param loc:
     :param img_doc:
     :return:
     """
     do_log.info("查找{}可见".format(img_doc))
     try:
         ele = self.driver.find_element(*loc)
     except:
         self.save_page_shot(img_doc)
         do_log.error("查找{}失败,保存截图".format(img_doc))
         raise
     else:
         return ele
コード例 #10
0
 def test_01_success_join_classroom(self, init_driver):
     do_log.info("-------------成功加入课程用例开始执行----------------")
     # 加入课程
     classroom_page.ClassroomPage(init_driver).join_classroom(
         success_data[0]["join_class_code"])
     # 获取提示信息
     show_tip_text = classroom_page.ClassroomPage(
         init_driver).get_show_tip_text()
     file_name = os.path.join(
         PAGESHOTS_DIR,
         f"加入课程_{datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')}.png")
     try:
         assert show_tip_text == success_data[0]["check_msg"]
     except:
         init_driver.save_screenshot(file_name)
         do_log.error(f"加入课程用例执行失败,截图:{file_name}")
     else:
         do_log.info("-------------成功加入课程用例执行完毕----------------")
コード例 #11
0
 def get_elements(self, loc, img_doc, timeout=10, poll_frequency=0.5):
     self.wait_element_visible(loc,
                               img_doc,
                               timeout=timeout,
                               poll_frequency=poll_frequency)
     do_log.info("在{}查找多个元素{}!".format(img_doc, loc))
     start_time = time.time()
     try:
         eles = self.driver.find_elements(*loc)
     except:
         # 异常截图 - 通过截图名称,知道是哪个页面或者哪个模块出错了
         # 异常日志捕获
         do_log.error("查找多个元素{}失败!!!".format(loc))
         self.save_screenshot(img_doc)
         raise
     else:
         end_time = time.time()
         do_log.info('查找多个元素时长为:{:.5f}'.format(end_time - start_time))
         return eles
コード例 #12
0
 def wait_page_contains_element(self,
                                loc,
                                img_doc,
                                timeout=10,
                                poll_frequency=0.5):
     do_log.info("在{}等待元素{}存在!".format(img_doc, loc))
     start_time = time.time()
     try:
         WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.presence_of_element_located(loc))
     except:
         # 异常截图 - 通过截图名称,知道是哪个页面或者哪个模块出错了
         # 异常日志捕获
         do_log.error("等待元素{}存在失败!!!".format(loc))
         self.save_screenshot(img_doc)
         raise
     else:
         end_time = time.time()
         do_log.info('等待元素存在时长为:{:.5f}'.format(end_time - start_time))
コード例 #13
0
 def test_02_fail_join_classroom(self, init_driver, data):
     do_log.info("-------------异常场景:加入课程用例开始执行----------------")
     # 加入课程
     classroom_page.ClassroomPage(init_driver).join_classroom(
         data["join_class_code"])
     # 获取提示信息
     error_tip_text = classroom_page.ClassroomPage(
         init_driver).get_error_tip_text()
     time.sleep(5)
     file_name = os.path.join(
         PAGESHOTS_DIR,
         f"加入课程_{datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')}.png")
     try:
         assert error_tip_text == data["check_msg"]
     except:
         init_driver.save_screenshot(file_name)
         do_log.error(f"加入课程用例执行失败,截图:{file_name}")
     else:
         do_log.info("-------------异常场景:加入课程用例执行完毕----------------")
         classroom_page.ClassroomPage(init_driver).click_quxiao_button()
コード例 #14
0
 def get_element_attr(self,
                      loc,
                      name,
                      img_doc,
                      timeout=10,
                      poll_frequency=0.5):
     self.wait_page_contains_element(loc,
                                     img_doc,
                                     timeout=timeout,
                                     poll_frequency=poll_frequency)
     ele = self.get_element(loc, img_doc)
     do_log.info("在{}中获取元素{}的{}属性".format(img_doc, loc, name))
     try:
         attr = ele.get_attribute(name)
     except:
         do_log.error("在{}中获取元素{}的属性{}失败!!!".format(img_doc, loc, name))
         self.save_screenshot(img_doc)
         raise
     else:
         do_log.info("在{}中获取元素{}的{}属性的值为:{}".format(img_doc, loc, name,
                                                    attr))
         return attr
コード例 #15
0
ファイル: basepage.py プロジェクト: luomabanxia/My_Test
 def wait_ele_visiball(self, loc, img_doc, timeout=20, poll_frequency=0.5):
     """
     等待元素封装
     :param loc:
     :param img_doc:
     :param timeout:
     :param poll_frequency:
     :return:
     """
     do_log.info("等待{}可见".format(img_doc))
     star_time = datetime.now()
     try:
         WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.visibility_of_element_located(loc))
     except:
         self.save_page_shot(img_doc)
         do_log.error("等待{}失败,保存截图".format(img_doc))
         raise
     else:
         end_time = datetime.now()
         do_log.info("等待{}可见成功,共等待{}".format(img_doc,
                                             (end_time - star_time)))
コード例 #16
0
 def get_elements_text(self, loc, img_doc, timeout=10, poll_frequency=0.5):
     # 等待元素存在
     self.wait_page_contains_element(loc,
                                     img_doc,
                                     timeout=timeout,
                                     poll_frequency=poll_frequency)
     # 查找多个元素,返回元素为WebElement的列表
     eles = self.get_elements(loc, img_doc)
     do_log.info("在{}中获取多个元素{}的文本内容".format(img_doc, loc))
     try:
         # 创建空列表存储元素的文本值
         ele_text = []
         # 利用for循环将元素的文本值存入列表
         for ele in eles:
             text = ele.text
             ele_text.append(text)
     except:
         do_log.error("在{}中获取多个元素{}的文本内容失败!!!".format(img_doc, loc))
         self.save_screenshot(img_doc)
         raise
     else:
         do_log.info("在{}中获取多个元素{}的文本内容列表为:{}".format(
             img_doc, loc, ele_text))
     return ele_text