コード例 #1
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("保存截图成功。")
コード例 #2
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
    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))
コード例 #3
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 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
コード例 #4
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
コード例 #5
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 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
コード例 #6
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 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
コード例 #7
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()}")
コード例 #8
0
 def click_element(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.click()
     # 失败了记录日志
     except:
         do_log.exception(f"点击{loc}元素失败。")
         # 失败了截图
         self._save_page_shot(img_doc)
         raise
コード例 #9
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 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)))
コード例 #10
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
コード例 #11
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 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
コード例 #12
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
コード例 #13
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
コード例 #14
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 def get_element_attribute(self, locator, attr, img_doc):
     #等待元素存在
     self.wait_page_contains_element(img_doc, locator)
     #查找元素
     ele = self.get_element(img_doc, locator)
     do_log.info("{},获取{}元素的属性{}.".format(img_doc, locator, attr))
     try:
         value = ele.get_attribute(attr)
     except:
         # 异常信息写入日志
         do_log.exception("获取元素属性失败:")  # 级别:Error   tracebak的信息完整的写入日志。
         # 截图 - 命名。 页面名称_行为名称_当前的时间.png
         self.save_page_screenshot(img_doc)
         raise
     else:
         do_log.info("获取的属性值为: {}".format(value))
         return value
コード例 #15
0
 def get_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:
         value = ele.text
     # 失败了记录日志
     except:
         do_log.exception(f"{img_doc}获取元素{loc}的文本值失败。")
         # 失败了截图
         self._save_page_shot(img_doc)
         raise
     else:
         do_log.info(f"文本值为:{value}")
         return value
コード例 #16
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
 def wait_page_contains_element(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("等待元素存在失败")
         # 截图 - 命名。 页面名称_行为名称_当前的时间.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)))
コード例 #17
0
 def get_element_attribute(self, loc, attr_name, 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}的{attr_name}属性。")
     # 输入文本内容
     try:
         value = ele.get_attribute(attr_name)
     # 失败了记录日志
     except:
         do_log.exception(f"{img_doc}获取元素{loc}的{attr_name}属性值失败。")
         # 失败了截图
         self._save_page_shot(img_doc)
         raise
     else:
         do_log.info(f"属性值为:{value}")
         return value
コード例 #18
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
コード例 #19
0
ファイル: basepage.py プロジェクト: OMEN001/Lemon_Web_Test
    def switch_to_iframe(self, iframe_pref, img_doc, timeout=30):
        """
        :param iframe_pref:
        :param img_doc:
        :param timeout:
        :return:
        """
        """
        等待iframe可用,并切换进去。
        :param iframe_pref: iframe的标识。支持下标、定位元组、WebElement对象、name属性
        :return: 无
        """
        try:
            WebDriverWait(self.driver, timeout).until(
                EC.frame_to_be_available_and_switch_to_it(iframe_pref))
        except:
            # 日志
            do_log.exception("切换到 {} 的iframe元素:{} 失败!".format(
                img_doc, iframe_pref))
            # 截图
            self.save_web_screenshot(img_doc)
            raise
        else:
            time.sleep(0.5)
            do_log.info("切换到 {} 的iframe元素:{} 成功!可以对新的html页面操作了!".format(
                img_doc, iframe_pref))


# if __name__ == '__main__':
#     from selenium import webdriver
#     from selenium.webdriver.common.by import By
#     driver = webdriver.Chrome("D:\Tools\Chrome浏览器\Google\Chrome\Application\chromedriver.exe")
#     driver.get("http://www.baidu.com")
#     driver.maximize_window()
#     ele = (By.XPATH,'//input[@id="kwss"]')
#     BasePage(driver).wait_ele_visiable("百度搜索页面",ele)