selenium 二次封装
时间: 2023-07-17 14:54:05 浏览: 96
Selenium 是一个非常强大的 Web 自动化测试框架,但是它的使用也比较繁琐。因此,很多人都会对 Selenium 进行二次封装,以便更加方便地使用。
二次封装的主要目的是简化 Selenium 的使用流程,并提高测试代码的可读性和可维护性。一些常见的二次封装方法包括:
1. 封装常用的元素定位方法,如 find_element_by_xpath、find_element_by_id 等,可以通过参数传递定位表达式,减少代码重复。
2. 封装常用的操作方法,如 click、send_keys 等,可以通过参数传递操作内容,同样减少代码重复。
3. 封装常用的断言方法,如 assert_title、assert_text 等,可以判断页面元素是否符合预期,提高测试代码的可靠性。
4. 封装测试用例,将测试用例与具体的实现代码分离,易于维护和扩展。
5. 封装数据驱动,将测试数据与测试代码分离,方便管理和修改。
总之,通过二次封装,可以使 Selenium 的使用更加简单、高效、可靠,从而提高测试效率和代码质量。
相关问题
selenium二次封装
Selenium的二次封装是指将常用的动作和方法封装到一个类中,以便于在自动化测试中多次调用。常见的二次封装包括将显示等待操作封装到元素定位中。
在二次封装中,我们可以使用显示等待来等待元素的出现,以避免在元素没有加载出来时出现定位错误。封装时,我们可以设置总等待时间和等待间隔,并使用WebDriverWait类的until方法来等待元素的可见性。如果超过指定的等待时间仍然无法定位到元素,可以选择抛出异常或跳过定位错误。
以下是一个示例的封装代码:
```
def ElementLocalization(method, locator, Sign=True):
try:
return AccordingWait(method, locator)
except Exception as e:
if Sign:
raise e
else:
return False
def AccordingWait(method, locator, total=3, interval=1):
Ele = WebDriverWait(driver, total, interval).until(
ec.visibility_of_all_elements_located((method, locator))
)
return Ele
```
在这个示例中,ElementLocalization函数封装了元素定位操作,其中使用了AccordingWait函数来实现显示等待。根据传入的定位方式和路径参数,ElementLocalization函数将使用显示等待来等待元素的可见性,并返回定位到的元素。如果定位失败,并且Sign参数为True,则会抛出异常;否则,将返回False。
使用二次封装后,我们可以直接调用ElementLocalization函数来定位元素,并在定位失败时选择如何处理错误。
请注意,这个示例中的代码只是一种封装方式,实际的封装方式可以根据需求进行调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Selenium基本二次封装](https://blog.csdn.net/weixin_43937682/article/details/122517450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
selenium 二次封装详细代码
以下是一个简单的 Selenium 二次封装代码示例,封装了常用的元素定位方法、操作方法和部分断言方法:
```python
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class BasePage(object):
def __init__(self, driver):
self.driver = driver
def find_element(self, by, value):
'''封装元素定位方法'''
element = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((by, value)))
return element
def click(self, by, value):
'''封装点击操作方法'''
element = self.find_element(by, value)
element.click()
def send_keys(self, by, value, text):
'''封装输入操作方法'''
element = self.find_element(by, value)
element.clear()
element.send_keys(text)
def assert_title(self, title):
'''封装页面标题断言方法'''
assert self.driver.title == title, 'Error: Title not match!'
def assert_text(self, by, value, text):
'''封装页面元素文本断言方法'''
element = self.find_element(by, value)
assert element.text == text, 'Error: Text not match!'
```
使用示例:
```python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.example.com')
page = BasePage(driver)
page.assert_title('Example Domain')
page.click(By.LINK_TEXT, 'More information...')
page.assert_text(By.CSS_SELECTOR, 'h1', 'More Information')
page.send_keys(By.NAME, 'q', 'selenium')
```
在上面的示例中,我们通过继承 BasePage 类,封装了常用的元素定位方法、操作方法和部分断言方法。使用时,只需要实例化 BasePage 类,并调用相应的封装方法即可。
阅读全文