• python的selenium实现自动登陆


    知道思想,参考其他文档,python的request模块selenium模块都可以实现get_cookie()和 add_cookie()的功能。

    由于现在在学习selenium自动化测试,我选用selenium的webdriver来实现。

    • 获取登陆的cookie
    from selenium import webdriver
    import time,json

    url = 'https://www.cnblogs.com/'
    driver = webdriver.Chrome()
    driver.get(url)
    time.sleep(30) # 在此时输入用户名和密码,先登录进网站
    cookies = driver.get_cookies()
    print(cookies)
    f1 = open('cookie.txt','w')
    f1.write(json.dumps(cookies))
    f1.close()
    • 再从文件里读取cookie,加入到driver的请求中去
    from selenium import webdriver
    import time,json

    driver = webdriver.Chrome()
    driver.delete_all_cookies()

    time.sleep(2)
    with open('cookie.txt') as f:
    cookie = json.loads(f.read())
    print(cookie)

    for c in cookie:
    driver.add_cookie(c)
    driver.get('https://www.cnblogs.com/')
    居然报错了-_-||,console的内容,提示selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
    查了资料,是由于在添加cookie之前没有访问网站,也就是说,需要先访问微博的某个网址,然后才能添加cookie,即添加cookie需要明确在哪个网站上添加cookie
    把driver.get('https://www.cnblogs.com/')换下地方,简单调整如下。运行成功~~~
    driver = webdriver.Chrome()
    driver.delete_all_cookies()
    driver.get('https://www.cnblogs.com/')
    time.sleep(2)
    with open('cookie.txt') as f:
    cookie = json.loads(f.read())
    print(cookie)

    for c in cookie:
    driver.add_cookie(c)
    driver.refresh()
  • 相关阅读:
    日期间隔之年、月、日、时、分、秒
    加减年、月、日、时、分、秒
    求总和的百分比
    返回最值所在行数据
    返回各部门工资排名前三位的员工
    生成累计和
    将字符和数字数据分离
    从字符串中删除不需要的字符
    计算字符在字符串中出现的次数
    字符串文字中包含引号
  • 原文地址:https://www.cnblogs.com/ppybear/p/12291848.html
Copyright © 2020-2023  润新知