selenium--cookie的使用
selenium3
pycharm
python3.7
1、获取cookies
def get_cookies(self): ''' 获取所有形式的cookies cookies若要添加到同一个浏览器内,可用此方法 :return: 返回所拿到的cookies,形式为列表(list),其中列表的每一个元素为一条cookie,形式为字典(dict) ''' return self.driver.get_cookies()
先封装获取cookies的函数
最终返回的是一个列表,每个元素为一条cookie,形式为字典
[{'domain':'xxx',...,'name_1':'value_1'...},{'domain':'xxx',...,'name_2':'value_2'...},...{'domain':'xxx',...,'name_n':'value_n'...}]
类似于这种,这个就是我们拿到的cookies
2、将cookies注入浏览器,实现免登陆
def open(self,url,cookies_list=None): time.sleep(wait_time) self.driver.get(url) #先指定url,告诉selenium如果要加cookies,要加到哪个url下 #判断是否要加入cookies if cookies_list == None: pass else: for i in range(len(cookies_list)): self.driver.add_cookie(cookies_list[i]) #若此时窗口未最大化,则最大化窗口,保证所有UI显示正常 try: self.driver.maximize_window() except: pass
我将cookies的注入和selenium的get()方法封装到一起
若要加入cookies,则将步骤1中获得的cookies传入open()的cookies_list参数中即可实现
3、若从浏览器A中去cookies,注入到浏览器B中
[{'domain':'xxx',...,'name_1':'value_1'...},{'domain':'xxx',...,'name_2':'value_2'...},...{'domain':'xxx',...,'name_n':'value_n'...}]
以上cookies含有浏览器信息,即不同浏览器中渠道的cookies不完全相同
我们可以提取其中的cookie_name,cookie_value,将他们单独保存下来
def get_cookies_values(self): ''' 跨浏览器添加cookies,eg:从浏览器A从取cookies,添加到浏览器B中 仅仅去cookies的值,name、value :return: 返回所拿到的cookies,形式为列表(list),其中列表的每一个元素为一条cookie,形式为字典(dict) [{'name_1':'value_1'},{'name_2':'value_2'},...{'name_n':'value_n'}] ''' cookies_list=self.driver.get_cookies() list=[] for i in range(len(cookies_list)): dict={'name':cookies_list[i]['name'],'value':cookies_list[i]['value']} list.append(dict) return list
注:
selenium中的
driver.add_cookie(cookies_dict)
是一次加入一条cookie,若cookie超过一条,利用循环一条一条的将cookie加进去