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小时内删除。