这是一个使用 Selenium 开发的公共类,包含了一些验证元素的方法,用于在测试中判断元素是否存在,输入数据,点击按钮,并记录验证失败信息。以下是对每个方法的功能说明:

  1. validate_text:验证文本框是否存在,如果存在则输入数据。

    • 接收参数包括 driver 对象、定位方式、元素列表、对应的输入数据列表、元素名称、错误提示信息列表和 urn
  2. validate_many_click:验证多个按钮是否存在,并点击。

    • 接收参数包括 driver 对象、定位方式、按钮元素列表、元素名称、错误提示信息列表和 urn
  3. validate_one_click:验证单个按钮是否存在,并点击。

    • 接收参数包括 driver 对象、定位方式、按钮元素、元素名称、错误提示信息和 urn
  4. validate_click_perhaps:验证按钮是否存在,并点击。

    • 接收参数包括 driver 对象、定位方式、按钮元素、元素名称、错误提示信息和 urn
  5. validate_element_button_click:验证元素按钮是否存在,存在则点击。

    • 接收参数包括 driver 对象、定位方式、按钮元素、元素名称、错误提示信息和 urn
  6. validate_text_content_click:验证文本框是否存在,存在则输入数据,并点击按钮。

    • 接收参数包括 driver 对象、定位方式、文本框元素列表、输入数据列表、元素名称、错误提示信息列表和 urn
  7. validate_content:判断是否有数据。

    • 接收参数包括 driver 对象、定位方式、urn、类名、查询文本框元素、文本框是否有内容元素和错误提示信息。
  8. validate_content_mate:对查询的数据进行匹配。

    • 接收参数包括 driver 对象、定位方式、urn、类名、文本框元素、错误提示信息列表和匹配内容。
  9. validate_data_content_click:查询数据,判断数据是否存在,并点击按钮。

    • 接收参数包括 driver 对象、定位方式、元素列表、元素名称、错误提示信息列表、urn 和匹配内容。

这些方法可以根据需要在测试中调用,用于验证元素的存在、输入数据、点击按钮,并记录验证失败的信息。

class ValidateData(ValidateLogin):
    '元素验证'

    def __init__(self):
        ValidateLogin.__init__(self)
        # self.records = list()
        # self.now_time = datetime.datetime.now()
        # self.status = True
        # self.has_data = True

    def validate_text(self, driver, by, elements: list, values: list, name: str, err_msg: list, urn):
        '文本元素输入框判断'
        for i in range(len(elements)):
            try:
                element = driver.find_element(by, elements[i])
                element.clear()
                time.sleep(5)
                element.send_keys(values[i])
                time.sleep(3)
            except NoSuchElementException:
                self.add_record(urn, name, Operate.INPUT_TEXT.value, err_msg[i], elements[i])
                return False
        return True

    def validate_many_click(self, driver, by, el, name, err_msg, urn):
        '多次点击按钮判断'
        for i in range(len(el)):
            try:
                driver.find_element(by, el[i]).click()
                time.sleep(5)
            except NoSuchElementException:
                self.add_record(urn, name, Operate.CLICK.value, err_msg[i], el[i])
                return False
        return True

    def validate_one_click(self, driver, by, el, name, err_msg, urn):
        '单次点击按钮判断'
        try:
            driver.find_element(by, el).click()
            time.sleep(5)
        except NoSuchElementException:
            self.add_record(urn, name, Operate.CLICK.value, err_msg, el)
            return False
        return True

    def validate_click_perhaps(self, driver, by, el, name, err_msg, urn):
        '按钮逻辑判断:或'
        try:
            driver.find_element(by, el).click()
            time.sleep(5)
        except NoSuchElementException:
            self.add_record(urn, name, Operate.CLICK.value, err_msg, el)
            return False
        return True

    def validate_element_button_click(self, driver, by, elements, name, err_msg, urn):
        '元素按钮判断,存在就点击 '
        try:
            element_export = driver.find_element(by, elements)
            element_export.click()
            time.sleep(5)
            return True
        except NoSuchElementException:
            self.add_record(urn, name, Operate.CLICK.value, err_msg, elements)
            return False

    def validate_text_content_click(self, driver, by, elements, values, name, err_msg, urn):
        '查找文本框  输入 点击'
        status_text = self.validate_text(driver, by, [elements[0]], [values], name, [err_msg[0]], urn)
        if not status_text:
            return status_text
        status_click = self.validate_element_button_click(driver, by, elements[1], name, err_msg[1], urn)
        if not status_click:
            return status_click
        return True

    def validate_content(self, driver, by, urn, class_name, element, sub_element, err_msg):
        '判断是否有数据
        查询文本框: element
        文本框是否有内容:sub_element
        '
        element_grid_xpath = driver.find_element(by, element)

        #  能否查找到cases
        cases = element_grid_xpath.find_elements(by, sub_element)
        if not cases:
            return True
        else:
            ValidateData().add_record(urn, class_name, Operate.SELECT_DATA.value, err_msg, element)
            # self.has_data = False
            # self.update_urn_is_load(urn)
            return False

    def validate_content_mate(self, driver, by, urn, class_name, text_element, err_msg: list, content):
        '对查询的数据进行匹配'
        text_data = list()
        element_status = driver.find_elements(by, text_element)
        if not element_status:
            self.add_record(urn, class_name, Operate.SELECT_DATA.value, err_msg[0], text_element)
            return False
        for t in element_status:
            text_data.append(t.text)  # 文本内容
        lowercase_list = [item.lower() for item in text_data]
        completed = any(content in s for s in lowercase_list)
        if not completed:
            self.add_record(urn, class_name, Operate.SELECT_DATA.value, err_msg[1], text_element)
            return False
        return True

    def validate_data_content_click(self, driver, by, elements: list, name, err_msg, urn, content):
        '查询数据  数据判断  都存在 点击click'
        # 查询
        data_status = self.validate_content(driver, by, urn, name, elements[0], elements[1], err_msg[0])
        if not data_status:
            return data_status
        # 数据判断
        content_status = self.validate_content_mate(driver, by, urn, name, elements[2], err_msg[1:3], content)
        if not content_status:
            return content_status
        # 点击
        urn_status = self.validate_element_button_click(driver, by, elements[3], name, err_msg[3], urn)
        if not urn_status:
            return urn_status
        return True
Selenium 元素验证公共类:方法及用例说明

原文地址: https://www.cveoy.top/t/topic/qbHp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录