def find_element_by_tag_name(self, tag_name): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在定位 TAG_NAME = {}".format(tag_name)) # 返回找到的元素对象 return self.driver.find_element_by_tag_name(tag_name)
def find_element_by_id(self, ID): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在定位 ID = {}".format(ID)) # 返回找到的元素对象 return self.driver.find_element_by_id(ID)
def switch_to_default_content(self): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t切会主窗口") # 返回找到的元素对象 return self.driver.switch_to.default_content()
def find_element_by_partial_link_text(self, partial_link_text): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在定位 PARTIAL_LINK_NAME = {}".format(partial_link_text)) # 返回找到的元素对象 return self.driver.find_element_by_partial_link_text(partial_link_text)
def find_elements_by_name(self, name): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在列表定位 NAME = {}".format(name)) # 返回找到的元素对象 return self.driver.find_elements_by_name(name)
def find_elements(self, By): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在列表定位 {} = {}".format(*By)) # 返回找到的元素对象 return self.driver.find_elements(*By)
def switch_to_frame(self, frame): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t切换内置窗口至 {}".format(frame)) # 返回找到的元素对象 return self.driver.switch_to.frame(frame)
def find_elements_by_css_selector(self, css_selector): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在列表定位 CSS_SELECTOR = {}".format(css_selector)) # 返回找到的元素对象 return self.driver.find_elements_by_css_selector(css_selector)
def find_elements_by_xpath(self, xpath): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在列表定位 XPATH = {}".format(xpath)) # 返回找到的元素对象 return self.driver.find_elements_by_xpath(xpath)
def find_elements_by_link_text(self, link_text): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在列表定位 LINK_NAME = {}".format(link_text)) # 返回找到的元素对象 return self.driver.find_elements_by_link_text(link_text)
def find_element_by_class_name(self, class_name): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t正在定位 CLASS_NAME = {}".format(class_name)) # 返回找到的元素对象 return self.driver.find_element_by_class_name(class_name)
def switch_to_alert(self): # 调用webdriver真正相应的方法 # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t弹出窗口点击 确认") # 返回找到的元素对象 return self.driver.switch_to_alert()
def Wait(self): driver = self.driver # 设置元素识别超时时间 driver.implicitly_wait(15) # 设置页面加载超时时间 driver.set_page_load_timeout(15) # 设置异步脚本加载超时时间 driver.set_script_timeout(15) log(self.log_path, "G\t加载初始化等等~~~")
def __init__(self, type=None): ''' 初始化指定的浏览器驱动 ''' # 得到webdriver self.driver = Chrome_flash() # self.driver = WebDriver(command_executor='http://172.31.23.143:4444/wd/hub', # desired_capabilities=DesiredCapabilities.CHROME) # 实例化基本配置 st = Settings() # 获取放慢速度 if type is None: self.speed = st.speed_default else: self.speed = st.speed_down log(self.log_path, "G\t初始化指定的浏览器驱动~~~")
def open(self, base_url): # 调用webdriver真正相应的方法 self.driver.get(base_url) # 加个等待时间 sleep(self.speed) log(self.log_path, "G\t打开网页:{}~~~".format(base_url))
def do_func(*arg): n = Settings().n i = 0 now = datetime.datetime.now() log( log_path, "A\t开始时间:{}\t{}".format(now.strftime('%Y-%m-%d %H:%M:%S'), func.__name__)) while True: log( log_path, "C\t{}{} 方法第{}次开始执行~~~".format(" ☆ ", func.__name__, i + 1)) try: func(*arg) break except AssertionError as e: log( log_path, "E\t{}{} 执行过程中出现了断言异常,具体信息为:\n\t{}".format( " ☆ ", func.__name__, str(e))) i += 1 except: log( log_path, "F\t{}{} 执行过程中出现了其他异常,具体信息为:\n\t{}".format( " ☆ ", func.__name__, traceback.format_exc())) i += 1 if i == n: break # lg.log("出现非断言异常,即将进行一次重试!速度将会根据配置文件放慢执行!!!!") log(log_path, "D\t{}{} 方法执行结束~~~".format(" ☆ ", func.__name__)) now = datetime.datetime.now() log( log_path, "B\t结束时间:{}\t{}\n".format(now.strftime('%Y-%m-%d %H:%M:%S'), func.__name__))
def quit(self): # 调用webdriver真正相应的方法 self.driver.quit() log(self.log_path, "G\t退出当前网页网页~~~")