Teresa_lqs 2022-01-20 11:13 采纳率: 100%
浏览 73
已结题

python自动化测试时,怎么让每个用例都保持登录状态?

现在正在学习自动化测试,用python编写代码,现在可以在京东商城实现自动登录。但是如果想执行其他用例,就是登录后的点击什么的,我不知道如何让每个独立的用例都保持登录状态
这是自动登录代码:
获取cookie:

# -*- coding: utf-8 -*-

from selenium import webdriver
from time import sleep
def get_cookies():
    driver = webdriver.Chrome()
    driver.maximize_window()  # 窗口最大化
    driver.implicitly_wait(5)  # 设置隐式等待
    url = 'https://www.jd.com/'
    driver.get(url)
    driver.find_element_by_class_name('link-login').click()  # 不要加s
    driver.find_element_by_link_text('账户登录').click() # a标签可以直接用文本
    # driver.find_element_by_id('longname').click()
    username = driver.find_element_by_id('loginname')
    username.clear() #如果有默认值,需要清空
    username.send_keys('15230199768')
    password =driver.find_element_by_id('nloginpwd')
    password.clear()
    password.send_keys('liqiushui123')
    sleep(20)
    cookies = driver.get_cookies()
    print(cookies)
if __name__ == '__main__':
    get_cookies()
    # sleep(100)



这是用cookie登录代码:


```python
# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep

'''
1、通过selenium获取登录成功后的cookie信息
2、管理cookie信息
3、调用cookie信息,实现自动登录,从而完成其他需要登陆的测试用例
'''

def login():
    # 这是一个新打开的页面, 用getJingDongLogin中获取的cookie
    # expiry是cookie的有效期,想要永久使用:
    # 1、可以删除expiry 2、或者再去getJingDongLogin获取新的cookie复制过来



    cookies =[‘我的cookie’]

    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(5)  # 设置隐式等待
    url = 'http://www.jd.com'
    driver.get(url)
    sleep(5)
    # 清除浏览器中存在的cookie信息
    driver.delete_all_cookies()



if __name__ == '__main__':
    login()


↑上面就登录成功了
**以下是其他用例的代码**

```python
# -*- coding: utf-8 -*-
import os
import time
import unittest
from selenium import webdriver
from dateutil.parser import parse
from BeautifulReport import BeautifulReport
import loginWithCookies

class Test(unittest.TestCase):

    # 启动函数,每个用例测试前,都会执行该函数
    def setUp(self):
        self.browser = webdriver.Chrome()
        self.browser.set_window_size(1920, 1080)
        self.starttime = parse(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
        print("开始测试时间:", self.starttime)
        self.browser.get("https://www.jd.com/")
        time.sleep(3)

    # 结束函数,每个用例测试结束后,都会执行该函数
    def tearDown(self):
        time.sleep(3)
        self.browser.quit()
        self.endtime = parse(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
        print("测试结束时间:", self.endtime)
        totaltime = (self.endtime - self.starttime).total_seconds()
        print("总时长:", totaltime, "秒")




    # 测试用例1:以test_开头
    def test_01(self):
        u"""测试用例1"""
        # self.save_img('测试用例1')
        self.browser.find_element_by_partial_link_text('秒杀').click()
        # self.browser.find_element_by_id("loginname").send_keys("15230199768")
        time.sleep(1)

if __name__ == '__main__':
    unittest.main()


这样的test_01没办法保持登录,我也不知道咋搞,现在脑子比较混乱,求解答

  • 写回答

1条回答 默认 最新

  • 於黾 2022-01-20 11:22
    关注

    你前面的测试完了,就不要再测试了,把test去掉,然后后面的要先调用前面的函数
    不管你后续是多复杂的一个功能,总要从先登录开始吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 1月20日

悬赏问题

  • ¥15 matlab中mjs用不了
  • ¥15 Ios抖音直播的时候如何添加自定义图片在直播间!
  • ¥60 riscv-pulpino总线上挂载axi从机
  • ¥15 ssh登录页面的问题
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥15 stm32 串口通讯过程中的问题
  • ¥20 公众号如何实现点击超链接后自动发送文字