现在正在学习自动化测试,用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没办法保持登录,我也不知道咋搞,现在脑子比较混乱,求解答