51Testing软件测试论坛
标题:
在写脚本时解决重复登录或者绕过登录问题之selenium
[打印本页]
作者:
lsekfe
时间:
2023-3-15 13:06
标题:
在写脚本时解决重复登录或者绕过登录问题之selenium
测试
过程中,每一次调试脚本都需要登录,特比的浪费时间我要做一下处理。
1,把
selenium
启动的
浏览器
状态进行持久化保存,其他的测试脚本可以共用浏览器状态,在一定程度上能提升测试效率,也可以用在其他的场合上。
2,大多数的网站操作都需要登录状态。我们可以先独立编写登录的代码,然后把登录的浏览器状态存储起来, 之后我们每次想进行该网站的操作,可以直接把浏览器 session 取出来,直接操作,节省了每次都要重新登录的流程。
3,cooking具有时效性,防止时效。
操作cookie
webdriver启动的浏览器没有把浏览器本身的cookie带出来,这个应该是隔离了本身的浏览器配置,如果能把它们统一就方便了,不过这样就不是测试框架了。。。
那么我们为了避免重复登录还是要想办法处理cookie。
import os
import pickle
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWait
options = webdriver.ChromeOptions()
options.add_argument('window-size=1920x1080') # 指定浏览器分辨率
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument("--no-sandbox")# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
s = Service('/usr/local/bin/chromedriver')
brower = webdriver.Chrome(service=s, options=options)
wait = WebDriverWait(brower, 10)
url = "http://https://weibo.com/"
brower.get(url)
bcookies = brower.get_cookies()
cookies_nologin = {}
for item in bcookies:
cookies_nologin[item['name']] = item['value']
print(cookies_nologin)
print("\n\n")
time.sleep(60)#页面做登录操作
bcookies = brower.get_cookies()
cookies = {}
for item in bcookies:
cookies[item['name']] = item['value']
outputPath = open('cookie.pickle','wb')
pickle.dump(cookies,outputPath)
#print(browser.get_cookies())
print(cookies)
print("\n\n")
import os
import pickle
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWait
options = webdriver.ChromeOptions()
options.add_argument('window-size=1920x1080') # 指定浏览器分辨率
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option('useAutomationExtension', False)
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument("--no-sandbox")# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
class TmallRefresh():
def __init__(self):
s = Service('/usr/local/bin/chromedriver')
cookie_pickle= pickle.load(open('cookie.pickle','rb'))
self.driver= webdriver.Chrome(service=s, options=options)
wait = WebDriverWait(self.driver,10)
url = "https://weibo.com/"
self.driver.get(url)
for cookie in cookie_pickle:
self.driver.add_cookie({ #"domain修改值weibo.com
"domain":".weibo.com","name":cookie,"value":cookie_pickle[cookie],"path": '/'})#"expires": None
self.driver.get(url)
time.sleep(1000000)
if __name__=='__main__':
qian=TmallRefresh()
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2