Selenium 元素验证公共类:方法及用例说明
这是一个使用 Selenium 开发的公共类,包含了一些验证元素的方法,用于在测试中判断元素是否存在,输入数据,点击按钮,并记录验证失败信息。以下是对每个方法的功能说明:
-
validate_text:验证文本框是否存在,如果存在则输入数据。- 接收参数包括
driver对象、定位方式、元素列表、对应的输入数据列表、元素名称、错误提示信息列表和urn。
- 接收参数包括
-
validate_many_click:验证多个按钮是否存在,并点击。- 接收参数包括
driver对象、定位方式、按钮元素列表、元素名称、错误提示信息列表和urn。
- 接收参数包括
-
validate_one_click:验证单个按钮是否存在,并点击。- 接收参数包括
driver对象、定位方式、按钮元素、元素名称、错误提示信息和urn。
- 接收参数包括
-
validate_click_perhaps:验证按钮是否存在,并点击。- 接收参数包括
driver对象、定位方式、按钮元素、元素名称、错误提示信息和urn。
- 接收参数包括
-
validate_element_button_click:验证元素按钮是否存在,存在则点击。- 接收参数包括
driver对象、定位方式、按钮元素、元素名称、错误提示信息和urn。
- 接收参数包括
-
validate_text_content_click:验证文本框是否存在,存在则输入数据,并点击按钮。- 接收参数包括
driver对象、定位方式、文本框元素列表、输入数据列表、元素名称、错误提示信息列表和urn。
- 接收参数包括
-
validate_content:判断是否有数据。- 接收参数包括
driver对象、定位方式、urn、类名、查询文本框元素、文本框是否有内容元素和错误提示信息。
- 接收参数包括
-
validate_content_mate:对查询的数据进行匹配。- 接收参数包括
driver对象、定位方式、urn、类名、文本框元素、错误提示信息列表和匹配内容。
- 接收参数包括
-
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
原文地址: https://www.cveoy.top/t/topic/qbHp 著作权归作者所有。请勿转载和采集!