Exemple #1
0
 def wait_eleVisible(self, locator, doc='', times=10, poll_frequency=0.5):
     """
             :param locator: 元素定位,是元组类型,是loginLocators.py传过来的元素
             :param doc: 是描述从测试用例模块TestCases文件里面的测试用例传过来的,用于测试用例运行失败时截图名称使用,
             :param times: 等待时间,最大等待时间
             :param poll_frequency: 每几秒钟访问一次
             :return:
             """
     Get_MyLog().info("等待元素{0}可见".format(locator))
     try:
         #开始等待的时间
         #把时间转为字符串beforetime
         beforetime = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")
         beforetime_struct = datetime.strptime(beforetime,
                                               "%Y-%m-%d %H:%M:%S")
         Get_MyLog().info("开始等待时间为:{}".format(beforetime_struct))
         WebDriverWait(self.driver, times, poll_frequency).until(
             EC.visibility_of_element_located(locator))
         # 结束等待时间
         aftertime = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")
         aftertime_struct = datetime.strptime(aftertime,
                                              "%Y-%m-%d %H:%M:%S")
         Get_MyLog().info("结束等待时间为:{}".format(aftertime_struct))
         # 求一个差值,写在日志的当中。等待了多久
         seconds = (aftertime_struct - beforetime_struct).seconds
         Get_MyLog().info("等待时长为:{}秒".format(seconds))
     except:
         # Get_MyLog().error("等待元素可见失败!,开始截图")
         self.save_Sreenshot(doc)
         raise
Exemple #2
0
 def get_element(self, locator, doc=''):
     Get_MyLog().info('查找元素:{}'.format(locator))
     try:
         return self.driver.find_element(*locator)
     except:
         Get_MyLog().error('查找元素失败!!!,开始截图')
         #截图
         self.save_Sreenshot(doc)
         raise
Exemple #3
0
 def click_element(self, locator, doc=""):
     #找元素
     ele = self.get_element(locator, doc)
     #元素操作
     Get_MyLog().info('{} 点击元素 {}'.format(doc, locator))
     try:
         ele.click()
     except:
         Get_MyLog().error("元素操作失败!!!,开始截图")
         #截图
         self.save_Sreenshot(doc)
         raise
Exemple #4
0
def access_web():
    Get_MyLog().info('进入测试......')
    #测试之前,开启和浏览器之间的会话
    #前置
    global driver
    driver = webdriver.Chrome()
    driver.get(login_url)
    driver.maximize_window()
    lg = LoginPages(driver)
    yield (driver, lg)  #是分割线,后面可以接收返回值
    #后置
    driver.quit()
    Get_MyLog().info('测试结束!!!')
Exemple #5
0
    def switch_to_iframe(self,
                         locator,
                         iframe_reference,
                         doc='',
                         times=10,
                         poll_frequency=0.5):
        """

        :param locator:
        :param iframe_reference: 被切换的iframe的元素定位名称
        :param doc:
        :param times:
        :param poll_frequency:
        :return:
        """
        #先切换到iframe,再查找元素
        try:
            WebDriverWait(self.driver, times, poll_frequency).until(
                EC.frame_to_be_available_and_switch_to_it(iframe_reference))
            self.get_element(locator, doc)
        except:
            Get_MyLog().error("iframe没有切换成功!!!")
            # 截图
            self.save_Sreenshot(doc)
            raise
Exemple #6
0
 def alter_action(self,
                  times=10,
                  poll_frequency=0.5,
                  action="accept",
                  doc=''):
     """
     :param times:
     :param poll_frequency:
     :param action: 默认是接受,alter弹窗
     :param doc:
     :return:
     """
     # 等待alter出现
     try:
         WebDriverWait(self.driver, times,
                       poll_frequency).until(EC.alert_is_present())
         # alert切换 不是html元素
         alert = self.driver.switch_to.alert
         if action == "accept":
             alert.accept()
         else:
             alert.dismiss()
     except:
         Get_MyLog().error("alter没有切换成功!!!")
         # 截图
         self.save_Sreenshot(doc)
         raise
Exemple #7
0
 def save_Sreenshot(self, doc):
     #图片名字:模块名_页面名称_操作名称_年-月-日_时分秒.png
     #截图存放的路径+操作名称+时间.png
     time = datetime.strftime(datetime.now(), "%Y-%m-%d_%H%M%S")
     file_name = GetPath.Screenshot_Path + doc + time + '.png'
     #给save_screenshot传递一个截图存放的文件名称
     self.driver.save_screenshot(file_name)
     Get_MyLog().info('截取网页成功。文件路径名称为:{}'.format(file_name))
Exemple #8
0
 def get_text(self, locator, doc=""):
     #找元素
     ele = self.get_element(locator, doc)
     try:
         return ele.text
     except:
         Get_MyLog().error("获取元素文本失败")
         #截图
         self.save_Sreenshot(doc)
         raise
Exemple #9
0
 def input_text(self, locator, text, doc=""):
     #找元素
     ele = self.get_element(locator, doc)
     #输入操作
     try:
         ele.send_keys(text)
     except:
         Get_MyLog().error("元素输入失败,开始截图")
         #截图
         self.save_Sreenshot(doc)
         #抛出异常
         raise
Exemple #10
0
 def wait_elePresence(self, locator, times=10, poll_frequency=0.5, doc=''):
     # Get_MyLog.info("等待{}元素出现".format(locator))
     #开始等待时间
     try:
         beforetime = datetime.now()
         beforetime_struct = datetime.strptime(beforetime,
                                               "%Y-%m-%d %H:%M:%S")
         Get_MyLog().info('开始等待时间为:{}'.format(beforetime_struct))
         WebDriverWait(self.driver, times, poll_frequency).until(
             EC.presence_of_element_located(locator))
         #结束等待时间
         aftertime = datetime.now()
         aftertime_struct = datetime.strptime(aftertime,
                                              "%Y-%m-%d %H:%M:%S")
         Get_MyLog().info('结束等待时间为:{}'.format(aftertime_struct))
         # 求一个差值,写在日志的当中。等待了多久
         seconds = (aftertime_struct - beforetime_struct).seconds
         Get_MyLog().info('等待的时间差为:{}S'.format(seconds))
     except:
         Get_MyLog().error('等待元素可见失败!,开始截图')
         self.save_Sreenshot(doc)
         raise
Exemple #11
0
 def get_element_arrtibut(self, locator, attribute_name, doc=""):
     """
     :param locator:
     :param attribute_name: 属性名称
     :param doc:
     :return:
     """
     ele = self.get_element(locator)
     try:
         return ele.get_attribute(attribute_name)
     except:
         Get_MyLog().error("获取元素属性失败!!!")
         # 截图
         self.save_Sreenshot(doc)
         raise