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)
时间: 2024-04-18 13:24:24 浏览: 228
根据您提供的代码,我注意到您在前置方法`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对象,并在测试用例中使用该对象进行后续操作。
希望这可以解决您的问题!如果还有其他疑问,请随时提出。
阅读全文