封装selenium相关的方法,并加上异常处理
时间: 2023-06-20 19:09:39 浏览: 96
好的,以下是一个简单的封装示例:
```python
from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
class SeleniumWrapper:
def __init__(self, driver_path):
self.driver = webdriver.Chrome(driver_path)
def __del__(self):
self.driver.quit()
def find_element(self, by, value, timeout=10):
try:
element = WebDriverWait(self.driver, timeout).until(
EC.presence_of_element_located((by, value))
)
return element
except TimeoutException:
raise NoSuchElementException(f"Element not found: {by}={value}")
def click(self, by, value, timeout=10):
try:
element = self.find_element(by, value, timeout)
element.click()
except NoSuchElementException as e:
print(e)
def send_keys(self, by, value, keys, timeout=10):
try:
element = self.find_element(by, value, timeout)
element.send_keys(keys)
except NoSuchElementException as e:
print(e)
```
这里我们以 `ChromeDriver` 为例,定义了一个 `SeleniumWrapper` 类,主要包含以下方法:
- `__init__`: 初始化方法,传入 `ChromeDriver` 的路径,创建一个 `webdriver` 实例。
- `__del__`: 析构方法,在对象销毁时退出 `webdriver`。
- `find_element`: 封装了 `selenium` 的 `WebDriverWait` 方法,根据给定的选择器查找元素,若未找到则抛出 `NoSuchElementException` 异常。
- `click`: 封装了点击操作,先调用 `find_element` 方法查找元素,若未找到则忽略异常。
- `send_keys`: 封装了输入操作,先调用 `find_element` 方法查找元素,若未找到则忽略异常。
以上方法均加入了异常处理,使得调用者可以更方便地使用 `selenium`,同时避免了一些常见的错误。
阅读全文