Selenium 公共类编写:验证元素存在、点击、输入文本和下载
使用 Selenium 编写公共类,可以有效提高代码复用性和可维护性。本文将介绍一些常用的方法,用于验证元素是否存在、判断按钮可点击、输入文本框以及下载文件等操作。
1. 验证元素是否存在
def is_element_exists(self, driver, locator):
"""判断元素是否存在"""
try:
driver.find_element(*locator)
return True
except NoSuchElementException:
return False
2. 判断元素是否可点击
def is_element_clickable(self, driver, locator):
"""判断元素是否可点击"""
try:
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(locator))
return element.is_enabled()
except TimeoutException:
return False
3. 输入文本到文本框
def input_text(self, driver, locator, text):
"""输入文本到文本框"""
try:
element = driver.find_element(*locator)
element.clear()
element.send_keys(text)
return True
except NoSuchElementException:
self.add_record(False, class_name, Operate.INPUT_TEXT.value, LogErrorMsg.ELEMENT_NOT_FOUND, locator)
return False
4. 记录元素不存在
def record_element_not_found(self, class_name, operation, locator):
"""记录元素不存在"""
self.add_record(False, class_name, operation.value, LogErrorMsg.ELEMENT_NOT_FOUND, locator)
使用示例
# 判断文本框是否存在,若存在,输入文本
if self.is_element_exists(driver, locator):
self.input_text(driver, locator, text)
else:
self.record_element_not_found(class_name, Operate.INPUT_TEXT, locator)
# 判断按钮是否存在,若存在,判断按钮是否可点击
if self.is_element_exists(driver, locator):
if self.is_element_clickable(driver, locator):
# 点击按钮
pass
else:
# 记录按钮不可点击
pass
else:
# 记录按钮不存在
pass
注意:
- 这只是一个示例,你可以根据实际情况进行修改和扩展。
- 你可能需要导入以下依赖项:
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
其他方法
- **判断连接能否点击,可点击就下载:**可以使用
driver.find_element(By.LINK_TEXT, '下载链接').click()方法点击链接,并使用driver.find_element(By.XPATH, '//a[@href="下载链接"]')获取下载链接。 - **点击下载,判断下载是否完成:**可以使用第三方库
selenium-wire或webdriver-manager来监控下载过程。 - **记录失败记录:**可以使用日志库
logging记录错误信息,并提供详细的错误位置和原因。
总结
通过编写公共类,我们可以有效地组织代码结构,提高代码复用性和可维护性。本文介绍了一些常用的元素验证方法,并提供了错误记录和重试机制,帮助你更好地构建自动化测试框架。你可以根据实际情况进行调整和扩展,以满足你的测试需求。
原文地址: https://www.cveoy.top/t/topic/qbEU 著作权归作者所有。请勿转载和采集!