【selenium 作业】企业微信实战1

  1. 使用 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()

https://github.com/cheng2020-G/20200507_pytest_calc/blob/master/test_wechat/test_login_cookies.py

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()

https://github.com/haiyangu/hogwarts12/blob/master/web/test_wechat.py

作业

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()