大周老师,慕课网 不能cookies 吗?我要跳转到 历史订单页面,但是一直跳转到登录页面

来源:2-8 使用cookies绕过登陆

慕雪8488780

2019-05-15

# 获取cookies
from selenium import webdriver
import time
import os
import json  # 数据 json方式的格式化

driver = webdriver.Chrome()
driver.maximize_window()


# 保存cookies 到文件中
def save_cookies(driver):
    project_path = os.path.dirname(os.getcwd())
    file_path = project_path + "/cookies/"
    if not os.path.exists(file_path):
        os.mkdir(file_path)
    # 从driver当中获取到cookies
    cookies = driver.get_cookies()
    with open(file_path + "imooc.cookies", "w") as c:
        # 这里必须用json.dump方法写入文件
        # 将来我们在取cookies的时候会使用json.loads方法,这里的格式就不匹配了
        json.dump(cookies, c)
    print(cookies)


def login():
    try:
        driver.get("https://www.imooc.com")
        # 点击登录按钮
        driver.find_element_by_id("js-signin-btn").click()
        # 点击登录窗口的 登录按钮 , 添加会报错(暂不用)
        # driver.find_element_by_class_name("active-title").click()
        # 输入账户名
        time.sleep(2)
        username = driver.find_element_by_xpath("//*[@id=\"signup-form\"]/div[1]/input")
        username.clear()
        username.send_keys("")
        # 输入密码
        password = driver.find_element_by_xpath("//*[@id=\"signup-form\"]/div[2]/input")
        password.clear()
        password.send_keys("")
        # 点击登录按钮
        driver.find_element_by_xpath("//*[@id=\"signup-form\"]/div[5]/input").click()
        # 保存cookies 信息到文件中
        save_cookies(driver)
    finally:
        time.sleep(3)
        driver.quit()


def get_url_with_cookies():
    # https: // order.imooc.com / myorder
    # 个人历史订单页面是否能够访问成功,来验证我们的cookies是否有效
    # 获取cookies文件
    project_path = os.path.dirname(os.getcwd())
    file_path = project_path + "/cookies/"
    cookies_file = file_path + "imooc.cookies"

    imooc_cookies_file = open(cookies_file, "r")
    imooc_cookies_str = imooc_cookies_file.readline()
    # 加载cookies 信息
    imooc_cookies_dict = json.loads(imooc_cookies_str)
    time.sleep(2)
    # 这个地方必须先访问一下网站,然后把旧的cookies删除掉之后
    # 再把我们保存的cookies添加进去
    driver.get("https://www.imooc.com")
    driver.delete_all_cookies()
    # 将cookies 信息添加到driver中
    for cookie in imooc_cookies_dict:
        driver.add_cookie(cookie)

    # 检查登录 是否成功
    driver.get("https://order.imooc.com/myorder")
    time.sleep(2)


if __name__ == '__main__':
    # login()
    get_url_with_cookies()

账号、密码 未添加

(在公司 上网有限制)

写回答

1回答

大周

2019-05-15

应该可以的。你需要debug,然后登录成功后保存cookies,这个才是正确的。别保存早了,早的不对

0
0

UI自动化测试经典项目实战 强化编程能力

从测试到测试开发的“快速通道”,让你掌握代码开发能力

298 学习 · 107 问题

查看课程