login_page = LoginPage(driver) TypeError: __init__() missing 1 required positional argument: 'url'
时间: 2023-11-01 10:06:55 浏览: 54
这个错误提示表明在实例化 LoginPage 对象时,缺少一个位置参数 "url"。可能是因为 LoginPage 类的构造函数需要传入 url 参数,但是你没有提供。
请检查 LoginPage 类的构造函数中是否需要 url 参数,并根据需要传递正确的参数。例如:
```
class LoginPage:
def __init__(self, driver, url):
self.driver = driver
self.url = url
...
```
在实例化 LoginPage 对象时,需要提供两个参数 driver 和 url:
```
login_page = LoginPage(driver, 'https://example.com/login')
```
相关问题
class LoginSuccess(unittest.TestCase): # def __init__(self, login_page_admin, index_page, login_page): # self.login_page_admin = login_page_admin # self.index_page = index_page # self.login_page = login_page # # self.driver = driver def __init__(self, login_type, account, password): super().__init__() self.login_type = login_type self.account = account self.password = password self.login = login_page.LoginPage.login self.get_success_msg = index_page.IndexPage.get_success_msg self.login_admin = login_page.LoginPageAdmin.login_admin self.get_success_msg_admin = index_page.IndexPage.get_success_msg def login_success(self, login_type=None, account=None, password=None): self.login(login_type='mail', account='10089@027168.com', password='admin123@12') result = None result = self.get_success_msg() # 3.比对断言结果 response = self.assertIn('用户中心', result) my_log.info('客户端, 登录成功!') return response # login_success(login_type='mail', account='10089@027168.com', password='admin123@12') def login_admin_success(self,account=None, password=None): self.login_admin(account='21012175', password='hyx@123123') result = None result = self.get_success_msg_admin() # 3.比对断言结果 response = self.assertIn('21012175', result) my_log.info('运营端, 登录成功!') return response LoginSuccess.login_success(login_type='mail', account='10089@027168.com', password='admin123@12')
这段代码看起来像是 Python 中的单元测试代码,其中包含了一个继承自 `unittest.TestCase` 的测试类 `LoginSuccess`。这个测试类中定义了两个方法 `login_success` 和 `login_admin_success`,用于测试登录功能是否成功。
在 `__init__` 方法中,定义了三个实例变量 `login_type`、`account` 和 `password`,分别表示登录类型、账号和密码。在 `login_success` 方法中,通过调用 `login_page.LoginPage.login` 方法进行登录,并使用 `index_page.IndexPage.get_success_msg` 方法获取登录成功后的提示信息,然后使用 `assertIn` 方法进行断言,判断返回的提示信息是否包含了字符串 `'用户中心'`。
在 `login_admin_success` 方法中,同样使用 `login_page.LoginPageAdmin.login_admin` 方法进行运营端的登录,并使用 `index_page.IndexPage.get_success_msg_admin` 方法获取登录成功后的提示信息,然后同样使用 `assertIn` 方法进行断言,判断返回的提示信息是否包含了字符串 `'21012175'`。
最后,通过调用 `LoginSuccess.login_success` 方法进行测试。该方法接受三个参数 `login_type`、`account` 和 `password`,分别表示登录类型、账号和密码,但是在实际调用时这些参数的值被固定死了,并没有使用传入的参数值。因此,需要修改该方法的实现,使其能够接受传入的参数,并使用传入的参数值进行测试。
def login(self, url='http://sddev.saimoyun.cn/#/login', userLoginPath='C:\Users\saimo\Desktop\Postman_Practice_file\登录.xlsx'): driver.get(url) wb = openpyxl.load_workbook(userLoginPath) # 选择工作表 ws = wb.active # 读取单元格数据, 赋值给变量 userName = ws['B1'].value passWord = ws['B2'].value # # 使用xpath定位需要操作的元素,并进行相应的操作 time.sleep(2) xpath_userName = ws['B5'].value element_userName = driver.find_element(By.XPATH, xpath_userName) # 定位输入账号位置 element_userName.click() # 进行单机操作 element_userName.send_keys(userName) # 输入用户名 # 如果需要输入文本,可以使用send_keys()方法。 # 定位输入账号位置, 进行单机操作 xpath_passWord = ws['B6'].value element_passWord = driver.find_element(By.XPATH, xpath_passWord) # 定位输入密码位置 element_passWord.send_keys(passWord) # 输入密码 # 拖动滑块右移300 xpath_slider = ws['B7'].value element_slider = driver.find_element(By.XPATH, xpath_slider) ActionChains(driver).click_and_hold(element_slider).move_by_offset(350, 0).release().perform() xpath_login = ws['B8'].value element_login = driver.find_element(By.XPATH, xpath_login) # 定位登录按钮, element_login.click() # 进行单机操作 print('用户登录成功') 这个如何进行封装?
可以将这段代码封装成一个类,例如:
```python
import time
import openpyxl
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
class LoginPage:
def __init__(self, driver):
self.driver = driver
def login(self, url='http://sddev.saimoyun.cn/#/login', userLoginPath='C:\Users\saimo\Desktop\Postman_Practice_file\登录.xlsx'):
self.driver.get(url)
wb = openpyxl.load_workbook(userLoginPath)
ws = wb.active
userName = ws['B1'].value
passWord = ws['B2'].value
time.sleep(2)
xpath_userName = ws['B5'].value
element_userName = self.driver.find_element(By.XPATH, xpath_userName)
element_userName.click()
element_userName.send_keys(userName)
xpath_passWord = ws['B6'].value
element_passWord = self.driver.find_element(By.XPATH, xpath_passWord)
element_passWord.send_keys(passWord)
xpath_slider = ws['B7'].value
element_slider = self.driver.find_element(By.XPATH, xpath_slider)
ActionChains(self.driver).click_and_hold(element_slider).move_by_offset(350, 0).release().perform()
xpath_login = ws['B8'].value
element_login = self.driver.find_element(By.XPATH, xpath_login)
element_login.click()
print('用户登录成功')
```
这样就可以通过创建 `LoginPage` 类的实例来调用 `login` 方法,例如:
```python
from selenium import webdriver
driver = webdriver.Chrome()
login_page = LoginPage(driver)
login_page.login()
```