import time from ERP_PO_2.Website.test_case.page_object.BasePage import BasePage from selenium.webdriver.common.by import By from ERP_PO_2.Website.test_case.model.myuint import Myunit class Addpage(BasePage,Myunit): PinPai = (By.XPATH, '//*[@id="leftmenu_asset_brand"]/a') XinZeng = (By.XPATH, '//*[@id="content"]/div[2]/div/div[1]/button') # 新增按钮 PP_1 = (By.XPATH, '//*[@id="title"]') # 品牌名称 PP_2 = (By.XPATH, '//*[@id="code"]') # 品牌编码 BaoCun = (By.XPATH, '//*[@id="submitButton"]') # 保存 def CaoZuo(self,data): time.sleep(3) self.find_el(*self.PinPai).click() self.find_el(*self.XinZeng).click() self.find_el(*self.PP_1).send_keys(data[0]) self.find_el(*self.PP_2).send_keys(data[1]) self.find_el(*self.BaoCun).click() time.sleep(3) text = self.driver.switch_to.alert.text self.driver.switch_to.alert.accept() time.sleep(2) print(text) return text def CZ(driver,data): #CZ = Addpage(driver) return Addpage(driver).CaoZuo(data)以上代码封装了吗 体现在哪里
时间: 2024-04-21 13:29:51 浏览: 116
是的,以上代码进行了页面对象模式的封装。封装体现在以下几个方面:
1. 定义了一个基础页面类(BasePage),其他页面对象类继承该类,避免重复编写相同的代码。
2. 使用了By类,封装了查找元素的方法,方便代码编写和维护。
3. 将测试数据作为参数传入到方法中,提高了代码的灵活性和可重用性。
4. 将页面操作方法封装在一个方法中(CaoZuo),方便调用和管理。
5. 封装了一个CZ方法,将Addpage(driver)的实例化和操作方法的调用封装在一起,方便调用和管理。
相关问题
E assert 'Dashboard - Leon CRM' in 'Leon CRM' E + where 'Leon CRM' = <selenium.webdriver.chrome.webdriver.WebDriver (session="1e02c84b8e24f72b5baf7d649b4e8925")>.title
这个错误提示显示了断言的实际结果,即 `'Leon CRM'`,也就是当前页面的 title。这个结果与期望的结果 `'Dashboard - Leon CRM'` 不符,导致断言失败。
这个问题可能是由于登录后的页面 title 与预期不同造成的,你可以在断言前先打印一下当前页面的 title,看看实际结果是否符合预期。修改后的代码如下所示:
```
class Test_Login_method(BasePage):
def test01_login_method(self, user, passwd):
self.get(LoginResources.URL_leons.value)
self.send_keys(LoginResources.LOC_账号, user)
self.send_keys(LoginResources.LOC_密码, passwd)
self.click(LoginResources.LOC_管理员)
self.click(LoginResources.LOC_登录按钮)
return self.driver
def test01_login(self, driver, arg):
page = Test_Login_method(driver)
res = page.test01_login_method(arg[0], arg[1])
print('当前页面 title:', res.title) # 打印页面 title
assert 'Dashboard - Leon CRM' in res.title
```
这样,在断言失败时,就可以通过打印当前页面的 title 来查看实际结果,从而找到问题所在。
在Page文件夹中新建BasePage.py文件,用来存放封装好的浏览器驱动、访问地址、元素定位方法等
在Page对象模式(Page Object Model,POM)的设计实践中,创建一个名为`BasePage.py`的文件是非常常见的。这种做法通常应用于Web应用的自动化测试框架中,特别是那些基于Selenium或其他类似工具的测试场景。`BasePage.py`的作用是将与网站交互相关的逻辑集中管理,使得测试代码更模块化、可维护。
在`BasePage.py`中,你可能会定义一个基类,如下所示:
```python
from selenium import webdriver
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:
def __init__(self, base_url, driver=None):
if driver is None:
self.driver = webdriver.Firefox() # 或者Chrome(), Edge()等,取决于你的环境配置
else:
self.driver = driver
self.base_url = base_url
def open_page(self):
self.driver.get(self.base_url)
def find_element_by_id(self, id_, timeout=10):
return WebDriverWait(self.driver, timeout).until(EC.presence_of_element_located((By.ID, id_)))
# 可能还包括其他的元素定位方法,如find_element_by_css_selector, find_element_by_xpath 等
# 示例如何使用这个BasePage:
base_page = BasePage('https://example.com')
base_page.open_page()
element = base_page.find_element_by_id('someElementId')
```
通过这种方式,每个具体的页面对象(如LoginPage、UserProfilePage等)只需继承`BasePage`,就可以直接使用已经封装好的功能,提高了代码的复用性和测试的可读性。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)