def is_exists(self, locator, number=None): """元素是否存在(DOM)""" try: values = getElement(locator, number) return EC.presence_of_element_located(values)(self.driver) except NoSuchElementException: return False
def is_visible(self, locator, number=None): """元素是否可见""" try: values = getElement(locator, number) self.visible_obj.until(EC.visibility_of_element_located(values)) return True except TimeoutException: return False
def is_click(self, locator, number=None): """点击""" values = getElement(locator, number) ele = self.wait.until(EC.element_to_be_clickable(values), message="点击元素{}失败!".format(values)) self.focus(ele) ele.click() sleep()
def element_screenshot(self, locator, path, number=None): """对某个元素进行截图,并返回截图路径""" values = getElement(locator, number) ele = self.find_element(values) self.focus(ele) self.driver.save_screenshot(path) area_screenshot(ele, path) self.driver.implicitly_wait(1) return path
def input_text(self, locator, text, number=None): """输入(输入前先清空)""" sleep(0.5) values = getElement(locator, number) ele = self.wait.until(EC.element_to_be_clickable(values), message="在元素%s中,输入<%s>失败!" % (values, text)) self.focus(ele) ele.clear() ele.send_keys(text) return text
def upload_file(self, locator, file_path, exists=None, number=None): """上传文件 :param locator: 上传文件的元素 input[type=file] :param file_path: 文件的路径 :param exists: 上传后要验证的元素 :param number: 元素index """ file_name = get_image_name(file_path)[0] values = getElement(locator, number) ele = self.find_element(values) self.focus(ele) ele.send_keys(file_path) start_time = timestamp() if file_path.endswith(('.jpg', '.png')): exists = base['模糊匹配文字'] % file_name while not self.is_exists(exists): sleep(0.5) if (timestamp() - start_time) > self.timeout: raise TimeoutException("上传文件{}超时!".format(file_path)) sleep(3) return file_path
def find_elements(self, *args, **kwargs): """查找多个相同的元素""" values = getElement(*args, **kwargs) return self.wait.until(EC.presence_of_all_elements_located(values), message="查找多个元素失败!{}".format(values))
def text_in_element(self, locator, text, number=None): """检查某段文本是否在元素中""" values = getElement(locator, number) return EC.text_to_be_present_in_element(values, text)(self.driver)
def is_selected(self, locator, number=None): """判断是否选中""" values = getElement(locator, number) return self.wait.until( EC.element_located_selection_state_to_be(values, True))