selenium实现绕过登录
痛点:在做web⾃动化的时候,每⼀个测试类都要去进⾏登录,这实在是太耗费性能,想着在整个测试周期内,只⽤登录⼀次就好了,完美解决⽅案:我们⼀般是⽤的是⽤cookie来控制登录状态,然⽽在selenium中有针对cookie的⽅法,下⾯做下简单实现
思路:
1、做登录操作
2、获取⽬前的cookies,将其存储在⼀个⽂件中
3、删除⽬前所有的cookie
4、在每⼀个测试类的类前置去拿到cookie并将其添加到driver中
下⾯是实现代码(以课堂派来做个列⼦)
1import json
2from time import sleep
3from selenium import webdriver
4import pytest
5
6
7
8class TestLogin:
9def test_login(self):
10
11 dir = webdriver.Chrome()
12 ("v4.ketangpai/")
13 dir.maximize_window()
14 sleep(2)
15 dir.find_element_by_xpath('//a[text()="登录"]').click()
16 sleep(1)
17 dir.find_element_by_xpath('//input[contains(@placeholder,"⼿机号")]').send_keys('XXXXXX@163')
18 dir.find_element_by_xpath('//input[contains(@placeholder,"密码")]').send_keys("XXXXXXX")
19 sleep(1)
20
21 dir.find_element_by_xpath('//a[contains(@class,"btn-btn")]').click()
22 cookie = _cookies() # 获取⽬前多有的cookies
23
24 with open("","w+") as f:
25 f.write(json.dumps(cookie)) # 将⽬前所有的cookies存储到⽂件中
26 dir.delete_all_cookies() # 删除⽬前内存中所有的cookies
27
28
29
30class TestA:
31def setup_class(self):
32 self.driver = webdriver.Chrome()
33 self.url = "v4.ketangpai/"
34 (self.url) # 这⾥必须调⽤下域名,让selenium知道你是想添加哪⼀个域名下的cookies
35
36 with open("./") as f:
37 data = json.ad())
38 self.driver.delete_all_cookies()
39for i in data:
40 self.driver.add_cookie(i) # 将⽂件中的cookie取出来添加到driver中
41
42def teardown_class(self):
43 self.driver.close()
44
45
46def test_1(self):
47 ("v4.ketangpai/Resource/index.html")
48 sleep(2)
49assert self.driver.find_element_by_xpath('//a[text()="个⼈备课"]').text == '个⼈备课'
50
51
52
53class TestB:
54def setup_class(self):
55 self.driver = webdriver.Chrome()
56 self.url = "v4.ketangpai/"
57 (self.url) # 这⾥必须调⽤下域名,让selenium知道你是想添加哪⼀个域名下的cookies
58
59 with open("./") as f:
60 data = json.ad())
selenium获取cookie61 self.driver.delete_all_cookies()
62for i in data:
63 self.driver.add_cookie(i) # 将⽂件中的cookie取出来添加到driver中
64
65def teardown_class(self):
66 self.driver.close()
67
68def test_2(self):
69 ("v4.ketangpai/Mooc/Mooc/index.html")
70 sleep(2)
71assert self.driver.find_element_by_xpath('//li[text()="我的在线课程"]').text == "我的在线课程"
72
73
74if__name__ == '__main__':
75 pytest.main()
从上⾯的代码执⾏结果我们可以发现,在做TestA和TestB的时候是没有做登录操作的,也可以实现页⾯的直接跳转进⾏测试
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论