一、登录问题的解决const.py中代码from selenium.webdriver.chrome.service import Service URL DRIVER_PATH Service(../../chromedriver.exe)main.py中代码import pytest if __name__ __main__: pytest.main([-vs, -p, no:warnings, ./])test_login.py中代码import time from selenium import webdriver from selenium.webdriver.common.service import Service from const import URL, DRIVER_PATH from selenium.webdriver.common.by import By def test_login_success(): service Service(DRIVER_PATH) driver webdriver.Chrome(serviceservice) driver.maximize_window() driver.get(URL) driver.find_element(By.LINK_TEXT, 请登录).click() username driver.find_element(By.CSS_SELECTOR, [typetext]) username.send_keys(USERNAME) password driver.find_element(By.CSS_SELECTOR, [typepassword]) password.send_keys(PASSWORD) login_button driver.find_element(By.CSS_SELECTOR, [typebutton]) login_button.click() # 我们应该如何判断登录是成功还是失败应该如何断言 time.sleep(3) assert driver.current_url 登录跳转的url二、统一driver配置优化解决传统方式在每个测试方法中单独启动浏览器导致重复初始化将driver配置提升至会话级别通过conftest.py文件实现共享import pytest from selenium import webdriver from selenium.webdriver.common.service import Service from const import DRIVER_PATH pytest.fixture(scopesession) def get_webdriver(): service Service(DRIVER_PATH) driver webdriver.Chrome(serviceservice) return drivertset_login.py中添加代码def test_login2_success(get_webdriver): driver get_webdriver driver.maximize_window() driver.get(URL) driver.find_element(By.LINK_TEXT, 请登录).click() username driver.find_element(By.CSS_SELECTOR, [typetext]) username.send_keys(USERNAME) password driver.find_element(By.CSS_SELECTOR, [typepassword]) password.send_keys(PASSWORD) login_button driver.find_element(By.CSS_SELECTOR, [typebutton]) login_button.click() # 我们应该如何判断登录是成功还是失败应该如何断言 time.sleep(3) assert driver.current_url 登录跳转的url三、示例——解决京东登录问题1、方法一import time from selenium import webdriver from selenium.webdriver.common.service import Service from const import URL, DRIVER_PATH from selenium.webdriver.common.by import By import pytest def test_jingdong_login(get_webdriver): driver get_webdriver driver.get(https://www.jd.com) driver.find_element(byBy.CSS_SELECTOR, value[classlink-login]).click() # 下边的代码会一直循环 # 直到我用手机扫码登录成功了它才不循环了 while True: print(driver.current_url) if driver.current_url https://www.jd.com: break time.sleep(3) print(登录成功) driver.find_element(byBy.LINK_TEXT, value我的购物车).click() time.sleep(3)2、方法二优化通过携带Cookie实现登录状态保持适用于任何项目的登录问题解决方案注意上面的test_jingdong_login要加上pytest.mark.skipdef test_jingdong_cookie_demo(get_webdriver): driver get_webdriver driver.get(https://www.jd.com) driver.find_element(byBy.CSS_SELECTOR, value[classlink-login]).click() # 下边的代码会一直循环 # 直到我用手机扫码登录成功了它才不循环了 while True: print(driver.current_url) if driver.current_url https://www.jd.com: break time.sleep(3) print(driver.get_cookies()) print(登录成功) # cookies []中写上面print(driver.get_cookies())打印出来的 def test_jingdong_cart_info(get_webdriver): cookies [{domain: .jd.com, expiry: 245647585, httponly: True, path: /}] driver get_webdriver driver.get(https://www.jd.com) # 添加cookies for c in cookies: driver.add_cookie(c) driver.find_element(byBy.LINK_TEXT, value我的购物车).click() time.sleep(3)