예제 #1
0
 def input_element(self,
                   loc,
                   text,
                   img_doc,
                   timeout=20,
                   poll_frequency=0.5):
     """
     输入框输入内容
     :param loc:
     :param text:
     :param img_doc:
     :param timeout:
     :param poll_frequency:
     :return:
     """
     self.wait_ele_visiball(loc, img_doc, timeout, poll_frequency)
     ele = self.get_element(loc, img_doc)
     try:
         ele.send_keys(text)
     except:
         self.save_page_shot(img_doc)
         do_log.info("{}输入失败,保存截图".format(img_doc))
         raise
     else:
         do_log.info("{}输入内容成功".format(img_doc))
예제 #2
0
 def test_04_pwd_error(self, login_setUp):
     login_setUp[1].login(error_phone_data_01["phone"], error_phone_data_01["pwd"])
     login_setUp[1].clear_input_phone()
     login_setUp[1].clear_input_pwd()
     login_setUp[1].login(error_pwd_data["phone"], error_pwd_data["pwd"])
     assert error_pwd_data["excepted"] == login_setUp[1].get_error_phone_text()
     do_log.info("{}案例通过".format(error_pwd_data["title"]))
예제 #3
0
 def visit_url(self, url, img_doc):
     do_log.info("访问{}".format(url))
     try:
         self.driver.get(url)
     except:
         do_log.info("访问{}失败,请检查url".format(url))
         self.save_screenshot(img_doc)
         raise
예제 #4
0
 def test_success_login(self):
     do_log.info("登录功能-正常场景用例-输入正确的用户名和密码登录")
     self.lp.login(CD.username,CD.password)
     # 登录后页面发生跳转建议这里等待一下
     time.sleep(1)
     # url发生改变
     self.assertEqual("http://8.129.91.152:8765/Index/index",self.driver.current_url)
     # 我的用户是否存在
     self.assertTrue(HomePage(self.driver).user_is_exited())
예제 #5
0
    def sava_page_screenshot(self, img_doc):
        now = time.strftime("%Y%m%d%H%M%S")
        screenshot_path = screenshot_dir + "{}_{}.png".format(img_doc, now)

        try:
            self.driver.save_screenshot(screenshot_path)
        except:
            do_log.exception("当前页面截图失败")
        else:
            do_log.info("页面截图成功并保存在{}".format(screenshot_path))
예제 #6
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
예제 #7
0
 def clear_input(self, loc, img_loc):
     ele = self.get_element(loc, img_loc)
     try:
         ele.clear()
     except:
         do_log.info("清空失败")
         self.save_page_shot(img_loc)
         raise
     else:
         do_log.info("清空成功")
예제 #8
0
 def _save_page_shot(self, img_doc):
     # 截图存放的路径
     file_name = os.path.join(PAGESHOTS_DIR, f"{img_doc}_{datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')}.png")
     do_log.info(f"截图保存在:{file_name}")
     try:
         self.driver.save_screenshot(file_name)
     except:
         do_log.exception("保存截图失败。")
     else:
         do_log.info("保存截图成功。")
예제 #9
0
    def switch_to_new_window(self):
        time.sleep(2)
        # 记录日志
        wins = self.get_window_handles()
        do_log.info(f"切换到最新的窗口:{wins[-1]}")
        try:
            self.driver.switch_to.window(wins[-1])

        # 失败了记录日志
        except:
            pass
예제 #10
0
 def get_element(self, img_doc, locator):
     do_log.info("{},查找元素{}".format(img_doc, locator))
     try:
         ele = self.driver.find_element(*locator)
     except:
         do_log.exception("查找元素失败!!!")
         # 截图 - 命名。 页面名称_行为名称_当前的时间.png
         self.sava_page_screenshot(img_doc)
         raise
     else:
         return ele
예제 #11
0
 def get_current_url(self):
     # 记录日志
     do_log.info("获取当前页面的url。")
     try:
         value = self.driver.current_url
     # 失败了记录日志
     except:
         value = do_log.exception(f"获取当前页面url失败。")
         raise
     else:
         do_log.info(f"当前页面的url为:{value}")
         return value
예제 #12
0
 def get_window_handles(self):
     # 记录日志
     do_log.info("获取当前打开的所有的窗口。")
     try:
         wins = self.driver.window_handles
     # 失败了记录日志
     except:
         do_log.exception("获取打开的窗口列表失败。")
         raise
     else:
         do_log.info(f"窗口列表为:{wins}")
         return wins
예제 #13
0
 def input_text(self, locator, value, img_doc, timeout=30, poll_fre=0.5):
     #等待元素可见
     self.wait_ele_visiable(locator, img_doc, timeout, poll_fre)
     # 查找元素
     ele = self.get_element(img_doc, locator)
     do_log.info("{},在{}中输入信息{}".format(img_doc, locator, value))
     try:
         ele.send_keys(value)
     except:
         do_log.exception("文本信息输入失败")
         # 截图 - 命名。 页面名称_行为名称_当前的时间.png
         self.sava_page_screenshot(img_doc)
         raise
예제 #14
0
 def click_element(self, locator, img_doc, timeout=30, poll_fre=0.5):
     #等待元素可见
     self.wait_ele_visiable(locator, img_doc, timeout, poll_fre)
     #查找元素
     ele = self.get_element(img_doc, locator)
     do_log.info("{},点击元素{}".format(img_doc, locator))
     try:
         ele.click()
     except:
         do_log.exception("元素点击失败")
         # 截图 - 命名。 页面名称_行为名称_当前的时间.png
         self.sava_page_screenshot(img_doc)
         raise
 def test_success_upload_homework(self, setup_enter_classroom):
     do_log.info("----------上传作业用例开始执行----------")
     WebClassPage(setup_enter_classroom).upload_homework_ready()
     # time.sleep(1)
     # ele = setup_enter_classroom.find_element(*WebClassPageLoc.add_button)
     # setup_enter_classroom.execute_script("arguments[0].click();", ele)
     time.sleep(3)
     # do_log.info("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
     WebClassPage(setup_enter_classroom).upload_homework(
         r'D:\"bbb.txt" "aaa.txt"')
     msg = WebClassPage(setup_enter_classroom).get_msg()
     assert msg == "作业提交成功"
     do_log.info("----------上传作业用例执行完成----------")
예제 #16
0
 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("保存截图成功")
예제 #17
0
 def switch_to_windows(self, img_doc):
     """
     切换窗口
     :param img_doc:
     :return:
     """
     wins = self.driver.window_handles
     try:
         self.driver.switch_to.window(wins[-1])
     except:
         do_log.info("切换{}窗口失败".format(img_doc))
         self.save_page_shot(img_doc)
         raise
     else:
         do_log.info("切换{}窗口成功".format(img_doc))
예제 #18
0
    def wait_page_contains_element(self, loc, img_doc, timeout=20, poll_frequency=0.5):
        do_log.info(f"{img_doc}等待{loc}元素可见。")

        try:
            start_time = datetime.now()
            WebDriverWait(self.driver, timeout, poll_frequency).until(EC.presence_of_element_located(loc))
        except:
            # 输出异常信息
            do_log.exception("等待元素存在失败")
            # 截图,截图名称要见名知意
            self._save_page_shot(img_doc)
            raise
        else:
            end_time = datetime.now()
            do_log.info(f"起始时间:{start_time},结束时间:{end_time},等待时长:{(end_time - start_time).total_seconds()}")
예제 #19
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("-------------退课用例执行完成----------------")
예제 #20
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
 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("----------进入班级用例执行成功----------")
예제 #22
0
 def input_text(self, loc, text, img_doc, timeout=20, poll_frequency=0.5):
     # 等待元素可见
     self.wait_ele_visible(loc, img_doc, timeout, poll_frequency)
     # 查找元素
     ele = self.get_element(loc, img_doc)
     # 记录日志
     do_log.info(f"{img_doc}在{loc}输入文本值:{text}。")
     # 输入文本内容
     try:
         ele.send_keys(text)
     # 失败了记录日志
     except:
         do_log.exception(f"{img_doc}在{loc}输入文本值:{text}失败。")
         # 失败了截图
         self._save_page_shot(img_doc)
         raise
예제 #23
0
 def check_element_visible(self,locator,img_doc,timeout=10,poll_fre=0.5):
     """
      # 检测元素是否在页面存在且可见。
      如果退出元素存在,则返回True。否则返回False
     :return: 布尔值
     """
     do_log.info("{}: 检测元素 {} 存在且可见于页面。".format(img_doc,locator))
     try:
         WebDriverWait(self.driver,timeout,poll_fre).until(EC.visibility_of_element_located(locator))
     except:
         do_log.exception(" {}秒内元素在当前页面不可见。".format(timeout))
         self._save_page_shot(img_doc)
         return False
     else:
         do_log.info(" {}秒内元素可见。".format(timeout))
         return True
예제 #24
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
예제 #25
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
예제 #26
0
 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
예제 #27
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
예제 #28
0
 def wait_ele_visiable(self, locator, img_doc, timeout=30, poll_fre=0.5):
     do_log.info("{},等待{}元素可见".format(img_doc, locator))
     try:
         start_time = datetime.datetime.now()
         WebDriverWait(self.driver, timeout, poll_fre).until(
             EC.visibility_of_element_located(locator))
     except:
         # 异常信息写入日志
         do_log.exception("元素可见失败")  # exception就是error级别,只不过输出的异常信息更为详细
         # 截图 - 命名。 页面名称_行为名称_当前的时间.png
         self.sava_page_screenshot(img_doc)
         raise
     else:
         end_time = datetime.datetime.now()
         do_log.info("元素等待结束,开始时间为:{},结束时间为:{},等待时长为:{}".format(
             start_time, end_time, (start_time - end_time)))
예제 #29
0
 def get_element_text(self, locator, img_doc, timeout=30, poll_fre=0.5):
     # 等待元素存在;
     self.wait_page_contains_element(locator, img_doc, timeout, poll_fre)
     # 查找元素
     ele = self.get_element(img_doc, locator)
     do_log.info("{},获取{}元素的文本内容.".format(img_doc, locator))
     try:
         text = ele.text
     except:
         do_log.exception("获取元素文本内容失败")
         # 截图 - 命名。 页面名称_行为名称_当前的时间.png
         self.sava_page_screenshot(img_doc)
         raise
     else:
         do_log.info("获取的文本值为:{}".format(text))
         return text
예제 #30
0
 def clear_text(self, loc, img_doc, timeout=20, poll_frequency=0.5):
     # 等待元素可见
     self.wait_ele_visible(loc, img_doc, timeout, poll_frequency)
     # 查找元素
     ele = self.get_element(loc, img_doc)
     # 记录日志
     do_log.info(f"{img_doc}在{loc}清空文本值。")
     # 输入文本内容
     try:
         ele.clear()
     # 失败了记录日志
     except:
         do_log.exception(f"{img_doc}在{loc}清空文本值失败。")
         # 失败了截图
         self._save_page_shot(img_doc)
         raise