class Testuser: def test_dws_001_register(self, start_browser): #驱动并打开网页 driver = start_browser #注册按钮跳转 driver.find_element(By.LINK_TEXT, "免费注册").click() phone_number = random_phone_number() #输入手机号
时间: 2024-04-17 17:28:19 浏览: 24
在这个测试用例中,我们首先需要启动浏览器并打开网页。然后,我们找到页面上的"免费注册"按钮并点击它。接下来,我们生成一个随机的手机号码,并将其输入到手机号码输入框中。我可以看到你使用了一个名为`random_phone_number()`的函数来生成随机手机号码。接下来,你可能会继续编写其他的测试步骤。请问还有什么问题吗?
相关问题
test_users.py::Testuser::test_dws_002_login FAILED [100%] testcase\testusers\test_users.py:32 (Testuser.test_dws_002_login) start_browser = <test_users.Testuser object at 0x000001A97FA135C8> def test_dws_002_login(start_browser): # 驱动并打开网页 driver = start_browser #登录 > driver.find_element(By.LINK_TEXT, "请登录").click() E AttributeError: 'Testuser' object has no attribute 'find_element' test_users.py:37: AttributeError
根据您提供的错误信息,问题可能出现在测试用例函数的参数列表中。您将`start_browser`作为参数传递给测试用例函数`test_dws_002_login`,但是在函数体内,您使用了`start_browser`来执行`driver.find_element`操作,这导致了AttributeError。
要解决这个问题,您可以将测试用例函数的参数列表中的`start_browser`改为`self`,这样就可以正确访问到驱动对象。修改后的代码如下所示:
```python
class Testuser:
def test_dws_002_login(self, start_browser):
# 驱动并打开网页
driver = start_browser
# 登录
driver.find_element(By.LINK_TEXT, "请登录").click()
# 其他测试步骤...
```
请注意,我将参数列表中的`start_browser`改为了`self`,这样您就可以通过`self`来访问驱动对象和其他类方法。
希望这可以帮助您解决问题!如果还有其他疑问,请随时提出。
import pytest from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager # 封装自动下载对应浏览器驱动 # 谷歌浏览器 @pytest.fixture() def start_browser(self): driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) # 打开网页 driver.get("http://meikefresh.5istudy.online/") driver.maximize_window() yield driver driver.quit() from time import sleep import pytest from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from testcase.testusers.conftest import get_code from utils.log_util import logger from utils.mysql_util import db from utils.phone_number import random_phone_number class Testuser: def test_dws_001_register(self, browser_init): # #驱动并打开网页 # driver = Browser_driver().browser_init() #注册按钮跳转 driver.find_element(By.XPATH, "//*[@id='ECS_MEMBERZONE']/a[2]").click() phone_number = random_phone_number() #输入手机号 driver.find_element(By.ID, "jsRegMobile").send_keys(phone_number) #点击获取验证码并输入 driver.find_element(By.ID, "jsSendCode").click() driver.implicitly_wait(10) code = get_code(phone_number) driver.find_element(By.ID, "jsPhoneRegCaptcha").send_keys(code) #输入密码 driver.find_element(By.ID, "jsPhoneRegPwd").send_keys("125678") #点击注册按钮并登录 driver.find_element(By.ID, "jsMobileRegBtn").click() sleep(30)
根据您提供的代码,我注意到您在前置方法`start_browser`中使用了`yield`关键字来返回driver对象,并在后面使用了`driver.quit()`来关闭driver。但是在测试用例`test_dws_001_register`中,您使用了`browser_init`作为前置方法的名称,而不是`start_browser`。这可能是导致测试用例无法找到前置方法并且没有返回driver的原因。
请将测试用例中的前置方法名称修改为`start_browser`,这样pytest才能正确识别并执行该前置方法。修改后的代码如下所示:
```python
class Testuser:
def test_dws_001_register(self, start_browser):
driver = start_browser # 获取前置方法返回的driver对象
# 注册按钮跳转
driver.find_element(By.XPATH, "//*[@id='ECS_MEMBERZONE']/a[2]").click()
phone_number = random_phone_number()
# 输入手机号
driver.find_element(By.ID, "jsRegMobile").send_keys(phone_number)
# 点击获取验证码并输入
driver.find_element(By.ID, "jsSendCode").click()
driver.implicitly_wait(10)
code = get_code(phone_number)
driver.find_element(By.ID, "jsPhoneRegCaptcha").send_keys(code)
# 输入密码
driver.find_element(By.ID, "jsPhoneRegPwd").send_keys("125678")
# 点击注册按钮并登录
driver.find_element(By.ID, "jsMobileRegBtn").click()
sleep(30)
```
请注意,我还添加了一行代码`driver = start_browser`,以获取前置方法`start_browser`返回的driver对象,并在测试用例中使用该对象进行后续操作。
希望这可以解决您的问题!如果还有其他疑问,请随时提出。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)