- 使用 cookies 登录企业微信,并点击通讯录
交作业
import shelve
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestCookies():
def setup(self):
options = Options()
options.debugger_address = "127.0.0.1:9222"
# self.driver = webdriver.Chrome(options=options)
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(3)
def teardown(self):
self.driver.quit()
def test_cookie(self):
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
# shelve.open(filename, flag='c', protocol=None, writeback=False)
db = shelve.open("cookies")
# db["cookie"] = self.driver.get_cookies()
cookies = db['cookie']
for cookie in cookies:
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
sleep(3)
db.close()
self.driver.find_element_by_id("menu_contacts").click()
sleep(3)
#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
:except:
·企业微信登录
·使用shelve对数据临时存储
·使用webdriver的debugging进行第一获取cookie
·chrome --remote-debugging-port=9222(依赖于chromedriver.exe)
· 只能开一个浏览器,多窗口访问不了
·options = Options() options.debugger_address = "127.0.0.1:9222"
:time: 2020-05-14
'''
import shelve
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# 企业微信登录测试类
class TestWorkWeiXinLogin:
def setup(self):
option = Options()
option.debugger_address='127.0.0.1:9223'
self.driver = webdriver.Chrome(options=option)
self.db = shelve.open("cookies")
def teardown(self):
self.driver.quit()
# get_cookies()获取cookies
@pytest.mark.run(order=1)
def test_login_save_cookies(self):
self.db["cookies"] = self.driver.get_cookies()
self.driver.get(url="https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element(By.ID, "menu_contacts").click()
# 通过add_cookie添加(这里的添加并没卵用,setup中已经有了有效的cookie)
@pytest.mark.run(order=2)
def test_login_get_cookies(self):
self.driver.get(url="https://work.weixin.qq.com/")
cookie = self.db["cookies"] # cookie 为列表
for _cookie in cookie:
if "expiry"in _cookie and not isinstance(_cookie["expiry"], int): # 不是整型转换
_cookie["expiry"] = round(_cookie["expiry"])
self.driver.add_cookie(_cookie)
self.driver.get(url="https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element(By.ID, "menu_contacts").click()
#使用 cookies 登录企业微信,并点击通讯录
import shelve
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
class Test_Weixin():
def setup(self):
option=Options()
option.debugger_address="127.0.0.1:9222"
self.driver = webdriver.Chrome(options=option)
self.driver.maximize_window()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_demo(self):
# self.driver.get("https://work.weixin.qq.com/")
print(self.driver.get_cookies())
##生成三个文件分别是:cookies.bak\cookies.dat\cookies.dir
db=shelve.open("cookies")
#将cookie存入shelve中
db['cookie']=self.driver.get_cookies()
cookies=db['cookie']
#遍历cookie列表
for cookie in cookies:
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element(By.ID,"menu_contacts").click()
作业:
import shelve
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestDemo():
def setup(self):
options = Options()
options.debugger_address = "127.0.0.1:9222"
self.driver = webdriver.Chrome()
self.driver.maximize_window()
def teardown(self):
# self.driver.quit()
pass
def test_demo(self):
# self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
db = shelve.open("cookies")
# db['cookie'] = self.driver.get_cookies()
cookies = db['cookie']
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
for cookie in cookies:
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
self.driver.find_element_by_id('menu_contacts').click()
sleep(6)
db.close()
作业
import time
from selenium import webdriver
# from selenium.webdriver.chrome.options import Options
# options = Options()
# options.debugger_address = "127.0.0.1:9222"
dr = webdriver.Chrome()
# dr.get('https://work.weixin.qq.com/')
dr.get('https://work.weixin.qq.com/wework_admin/frame')
# dr.find_element_by_xpath('/html/body/div[1]/ul/li[2]/a').click()
cookies = [自己的cookie]
# print(dr.get_cookies())
for cookie in cookies:
dr.add_cookie(cookie)
dr.refresh()
dr.find_element_by_id('menu_contacts').click()
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
def get_web_cookie():
driver = webdriver.Chrome()
driver.get("https://work.weixin.qq.com/wework_admin/frame")
print("请扫码登录")
WebDriverWait(driver, 60, 0.5).until(EC.presence_of_element_located((By.ID, "menu_contacts")))
cookies = driver.get_cookies()
print(cookies)
driver.quit()
return cookies
class TestCookie:
def setup_class(self):
self.cookies = get_web_cookie()
def setup_method(self):
self.driver = webdriver.Chrome()
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
for cookie in self.cookies:
print(cookie)
if "expiry" in cookie:
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
def teardown_method(self):
self.driver.quit()
def test_address_book(self):
self.driver.find_element_by_id("menu_contacts").click()
sleep(2)
def test_menu_apps(self):
self.driver.find_element_by_id("menu_apps").click()
sleep(2)
交作业
import shelve
import pytest
from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
class TestDemo:
def setup(self):
options = Options()
options.debugger_address = "127.0.0.1:9111"
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_company_chat(self):
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
db = shelve.open("cookies")
# db["cookie"] = self.driver.get_cookies()
cookies = db["cookie"]
for cookie in cookies:
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element_by_css_selector("#menu_contacts").click()
time.sleep(3)
db.close()
if __name__ == '__main__':
pytest.main()
2020-5-14作业:
import json
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
class TestWework:
def setup(self):
##复用浏览器
# option = webdriver.ChromeOptions()
# option.debugger_address = "127.0.0.1:9999"
# self.driver = webdriver.Chrome(options=option)
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_wework(self):
##结合复用的浏览器,取到cookies信息并存入cookies.json文件中
# json.dump(self.driver.get_cookies(),open("cookies.json","w"),indent=4)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
# 读取json文件中的cookies信息
cookies = json.load(open("cookies.json", "r"))
# 将cookies中的信息循环加入到self.driver.add_cookie中,并遇到expiry则删除
for cookie in cookies:
if "expiry" in cookie:
cookie.pop("expiry")
self.driver.add_cookie(cookie)
# 刷新当前网页
self.driver.refresh()
# 点击通讯录标签
self.driver.find_element(By.CSS_SELECTOR, "#menu_contacts > span").click()
import shelve
from http import cookies
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestCookie ():
def setup(self):
options = Options ()
options.debugger_address = "127.0.0.1:9222"
self.driver = webdriver.Chrome ()
self.driver.maximize_window()
def teardown(self):
self.driver.quit ()
def test_cookie(self):
#print (self.driver.get_cookies ()) #获取当前浏览器的cookies
self.driver.get ("https://work.weixin.qq.com/wework_admin/frame")
db = shelve.open("cookies") #cookies 为列表
# db['cookie'] = self.driver.get_cookies() #保存cookie到本地db
cookies = db['cookie']
# 剔除expiry,以防expiry带小数
for cookie in cookies:
if 'expiry' in cookie.keys():
cookie.pop('expiry')
self.driver.add_cookie(cookie)
self.driver.get ("https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element_by_id('menu_contacts').click()
sleep(3)
db.close()
import shelve
from time import sleep
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestDemo():
def setup_method(self):
options = Options()
options.debugger_address = “127.0.0.1:9222”
self.driver = webdriver.Chrome()
self.vars = {}
def teardown_method(self):
self.driver.quit()
def test_demo(self):
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
db = shelve.open("cookies")
# db['cookie'] = self.driver.get_cookies()
cookies = db['cookie']
for cookie in cookies:
if 'expiry' in cookie:
cookie.pop('expiry')
self.driver.add_cookie(cookie)
sleep(2)
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
sleep(2)
self.driver.find_element_by_id('menu_contacts').click()
sleep(2)
if name == ‘main’:
pytest.main()
class TestWeiXin:
def setup(self):
options = Options()
options.debugger_address = '127.0.0.1:9696'
# self.driver = webdriver.Chrome(options=options)
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def add_cookies(self):
db = shelve.open('cookies')
# db['cookie'] = self.driver.get_cookies() # cookies获取
cookies = db['cookie']
for cookie in cookies:
if 'expiry' in cookie.keys():
cookie.pop('expiry')
self.driver.add_cookie(cookie)
db.close()
def test_weixin(self):
# 第一步:打开要登陆的页面
self.driver.get('https://work.weixin.qq.com/wework_admin/frame#index')
# 第二步:添加cookie
self.add_cookies()
# 第三步:登陆页面
self.driver.get('https://work.weixin.qq.com/wework_admin/frame#index')
# 第四步:点击联系人
self.driver.find_element_by_css_selector('#menu_contacts').click()
import shelve
from selenium import webdriver
from time import *
class TestWechart:
def setup(self):
option = webdriver.ChromeOptions()
option.debugger_address = '127.0.0.1:9222'
self.driver = webdriver.Chrome(options=option)
self.driver.maximize_window()
self.driver.implicitly_wait(5)
def teardown(self):
self.driver.quit()
def test_chrome(self):
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
# db['cookie'] = self.driver.get_cookies()
db = shelve.open("cookies")
db['cookie'] = self.driver.get_cookies()
cookies = db['cookie']
for cookie in cookies:
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
self.driver.find_element_by_id('menu_contacts').click()
db.close()
sleep(5)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestWXWrokLogin():
def setup(self):
# 复用当前浏览器
options = Options()
# cmd输入 chrome --remote-debugging-port=9222,端口自由定义
options.debugger_address = "127.0.0.1:9222"
self.driver = webdriver.Chrome()
def teardown(self):
self.driver.quit()
def test_demo(self):
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
# self.driver.find_element_by_id("menu_contacts").click()
# 持久化存储,文件名为cookies,对象为db,第一次使用open类似set,再次使用open即为get
db = shelve.open("cookies")
# 把网页的cookies存储在db['cookie']中
# db['cookie'] = self.driver.get_cookies()
cookies = db['cookie']
for cookie in cookies:
# 去除掉影响数据
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
time.sleep(3)
# 同步并关闭对象db
db.close()
import shelve
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestDemo:
def setup(self):
# options = Options()
# options.debugger_address = "127.0.0.1:9222"
self.driver = webdriver.Chrome()
def teardown(self):
self.driver.quit()
def test_demo(self):
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
db = shelve.open("cookies")
# db["cookie"] = self.driver.get_cookies()
cookies = db["cookie"]
for cookie in cookies:
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element_by_link_text("通讯录").click()
sleep(5)
db.close()
作业
import shelve
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class TestDemo():
def setup_method(self):
# 复用浏览器
options = Options()
options.debugger_address = "127.0.0.1:9222"
#self.driver = webdriver.Chrome(options=options)
self.driver = webdriver.Chrome()
def teardown_method(self):
self.driver.quit()
def test_getcookies(self):
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
# 获取cookies使用shelve存到本地db[cookies]中
db = shelve.open("cookies")
# db['cookies'] = self.driver.get_cookies()
# 使用cookies看是否生效
cookies = db['cookies']
for cookie in cookies:
# expiry字段删除,时效小数报错
if "expiry" in cookie.keys():
cookie.pop("expiry")
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
self.driver.find_element_by_css_selector("#menu_apps > span").click()
sleep(5)
#同步关闭db
db.close()
#不加等待会报错,所以加了1秒
sleep(1)
import shelve
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options
# 创建options参数
options = Options()
options.debugger_address = '127.0.0.1:9222'
# 复用浏览器
driver = webdriver.Chrome(options=options)
# 新建shelve文件,并保存复用浏览器的cookies
f = shelve.open('datas/cookies')
f['cookies'] = driver.get_cookies()
# 打印一下保存的cookies
print(f['cookies'])
# 关闭driver
driver.quit()
try:
# 新建一个不使用复用浏览器的driver,并访问企业微信地址
driver = webdriver.Chrome()
driver.get('https://work.weixin.qq.com/wework_admin/frame')
# 把刚才保存的cookies添加到当前企业微信页面的cookies中
cookies = f['cookies']
for cookie in cookies:
if 'expiry' in cookie.keys():
cookie.pop('expiry')
driver.add_cookie(cookie)
f.close()
# 再次访问企业微信地址
driver.get('https://work.weixin.qq.com/wework_admin/frame')
# 点击通讯录按钮
driver.find_element_by_id('menu_contacts').click()
sleep(3)
finally:
# 关闭driver
driver.quit()
import shelve
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
class TestCookie:
def setup(self):
options = Options()
options.debugger_address = “127.0.0.1:8081”
# self.driver = webdriver.Firefox(options=options)
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(5)
self.driver.maximize_window()
def teardown(self):
self.driver.quit()
def test_cookie(self):
self.driver.get("https://work.weixin.qq.com/wework_admin/frame")
db = shelve.open("test_db")
# db['cookie'] = self.driver.get_cookies() #获取网页cookies(),保存在test_db中
cookies = db['cookie']
for cookie in cookies:
if 'expiry' in cookie.keys():
cookie.pop('expiry')
self.driver.add_cookie(cookie)
self.driver.get('https://work.weixin.qq.com/wework_admin/frame')
self.driver.find_element(By.CSS_SELECTOR, '#menu_contacts > span').click()
sleep(3)
db.close()