企业微信自动化登录1+2


企业微信自动化登录1

 

 

 

 官网文档:https://seleniumhq.github.io/selenium/docs/api/py/

浏览器厂商提供了webdriver驱动,所以用selenium控制浏览器不非法

 

 复用已有浏览器(调试)

用途:

方便调试selenium脚本

使用remote开启远程调试端口

1、将chrome的路径——C:\Program Files (x86)\Google\Chrome\Application添加至path系统变量,或者将cmd中的路径切换至chrome安装目录

2、chrome浏览器全部处于关闭状态,将chrome高级设置——关闭 Google Chrome 后继续运行后台应用  也关掉,如下图

 

 

 

3、命令执行:chrome --remote-debugging-port=9222   (检查9222端口是否被占用,设置未被占用的端口)

 

 4、执行后验证方式为:在自动打开的浏览器内输入ip和端口号:127.0.0.1:9222   后,出现如下页面即为成功

 

 5、在pycharm中输入运行如下代码:会看到没有打开新的浏览器,而是直接从第四步的页面访问到百度首页

from selenium import webdriver

class TestWework:
    def setup_method(self):
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"# 设置debug地址
        # self.driver = webdriver.Chrome() 原来的初始化driver
        self.driver=webdriver.Chrome(options=opt)#现在的初始化driver
        
    def teardown_method(self):
        self.driver.quit()

    def test_demo(self):
        self.driver.get("https://www.baidu.com")

 

企业微信自动化登录2

企业微信的自动化登录

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

#复用浏览器:先通过命令行执行chrome --remote-debugging-port=9222,在打开的浏览器内输入ip和端口:127.0.0.1:9222,或者试下没这步,直接打开企业微信网址扫码登录成功后,运行如下代码达到复用浏览器效果
class TestWework:
    def setup_method(self):
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"  # 设置debug地址
        # self.driver = webdriver.Chrome() 原来的初始化driver
        self.driver = webdriver.Chrome(options=opt)  # 现在的初始化driver

    def teardown_method(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()
        print(self.driver.get_cookies())



#'''
#新开浏览器自动扫码登录成功:通过将test_demo中获得的正确的cookie信息加入selenium,达到在新开浏览器自动扫码登录成功并点击通讯录效果
def test_cookie():
    driver=webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx?")#这是扫码的页面,因为直接复用cookies去访问扫码通过的页面时会由于cookie内默认域名——weixin.qq.com与selenium默认的域名——data:, 不同而导致cookie失效,所以设置cookie之前必须需先打开一下目标地址——weixin.qq.com
    print(driver.get_cookies())#注意1!此处获得cookies并不是正确的cookies,和test_demo里打印出的cookies不同,所以若直接用下面注释的代码而获得cookies则会造成认证不通过的问题,自然也无法进入扫码后的页面。注意2!driver.get("网址")不成功并不会自动报错
    #cookies=driver.get_cookies()#获取扫码后留在浏览器的身份认证cookie信息
    cookies=[{'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.vst', 'path': '/', 'secure': False, 'value': 'ykfrgz5a_7wxiqStqYmoaesVMW3yf3zAQlUyUcG1bobGCoqKRABePufvrgILJSe35QokaZvfoC2cHg7vcp8lOELaXZUcS26JeU9Wz6CODKg1K1YWlgsS-oiouyvoIQUPBb3AlM-KuNcymZFWLHIQmIAxPGJUuWmJJmyTrOAyXF6XpdGLqUcxMWOEJ_Kv_Qn21QI8BKkFNsbAu5xtn0NYM-4RPxjAXdPNF6V6-7BXaV58wQkFuDCgl7ansCfjXXFpLmdeNh7x6rkfLJJkRsjnyA'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.sid', 'path': '/', 'secure': False, 'value': 'ebHWhpltgCr45cJqu4LHh41AXrshLH3B2V5Pu7Ezf086PF5efjOulpY5ZfJVp0yW'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'Hm_lpvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1638934593'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.logined', 'path': '/', 'secure': False, 'value': 'true'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.cs_ind', 'path': '/', 'secure': False, 'value': ''}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.vid', 'path': '/', 'secure': False, 'value': '1688854321275335'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.corpid', 'path': '/', 'secure': False, 'value': '1970325009507720'}, {'domain': '.qq.com', 'expiry': 1702006741, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.1848351874.1638869099'}, {'domain': '.qq.com', 'httpOnly': False, 'name': 'pgv_info', 'path': '/', 'secure': False, 'value': 'ssid=s5276701225'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ltype', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.d2st', 'path': '/', 'secure': False, 'value': 'a5436410'}, {'domain': '.work.weixin.qq.com', 'expiry': 1670470592, 'httpOnly': False, 'name': 'Hm_lvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1638890106,1638890113,1638890597,1638934593'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.refid', 'path': '/', 'secure': False, 'value': '39133735411497724'}, {'domain': '.work.weixin.qq.com', 'expiry': 1670405097, 'httpOnly': False, 'name': 'wwrtx.c_gdpr', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.vid', 'path': '/', 'secure': False, 'value': '1688854321275335'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ref', 'path': '/', 'secure': False, 'value': 'direct'}, {'domain': '.qq.com', 'httpOnly': False, 'name': '_qpsvr_localtk', 'path': '/', 'secure': False, 'value': '0.7811498614680983'}, {'domain': '.qq.com', 'expiry': 2147385600, 'httpOnly': False, 'name': 'pgv_pvid', 'path': '/', 'secure': False, 'value': '3178219336'}, {'domain': '.qq.com', 'expiry': 1639021141, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.452945125.1638869099'}, {'domain': '.work.weixin.qq.com', 'expiry': 1641526990, 'httpOnly': False, 'name': 'wwrtx.i18n_lan', 'path': '/', 'secure': False, 'value': 'zh'}]
    for cookie in cookies:
        driver.add_cookie(cookie)#将获取到的cookies加入selenium
    driver.get("https://work.weixin.qq.com/wework_admin/frame")
    sleep(3)
    driver.find_element(By.ID, "menu_contacts").click()
    driver.quit()
#'''

 

使用yaml文件实时存储正确cookies的企业微信的自动化登录升级版

需要用的其他知识点有:

  1. with open(path,模式,encoding="UTF-8") as f: 用法
  2. yaml文件的写入:yaml.dump(data,file)
  3. yaml文件的读取:yaml.safe_load(f)

 在代码中的运用实例如图中两处:

 

 详细代码如下:

import yaml
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
#复用浏览器:先通过命令行执行chrome --remote-debugging-port=9222,在打开的浏览器内输入ip和端口:127.0.0.1:9222,或者试下没这步,直接打开企业微信网址扫码登录成功后,运行如下代码达到复用浏览器效果

#第一步:通过复用登录成功的浏览器,函数test_getcookies将实时获取的正确cookies写入当前目录下的data.yaml文件进行存储
def test_getcookies():
        opt = webdriver.ChromeOptions()
        opt.debugger_address = "127.0.0.1:9222"  # 设置debug地址
        # driver = webdriver.Chrome() 原来的初始化driver
        driver = webdriver.Chrome(options=opt)  # 现在的初始化driver
        driver.implicitly_wait(5)
        driver.get("https://work.weixin.qq.com/wework_admin/frame")
        data=driver.get_cookies()
        with open("data.yaml","w",encoding="UTF-8") as f:
            yaml.dump(data,f)
#第二步:函数test_login开启新的浏览器,通过读取data.yaml文件中的cookie给selenium从而完成自动化扫码登录
def test_login():
    driver = webdriver.Chrome()
    driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx?")
    with open("data.yaml",encoding="UTF-8") as f:
        yaml_data=yaml.safe_load(f)
        for cookie in yaml_data:
            driver.add_cookie(cookie)  # 将获取到的cookies加入selenium
    driver.get("https://work.weixin.qq.com/wework_admin/frame")
    sleep(3)
    driver.find_element(By.ID, "menu_contacts").click()
    sleep(3)
    driver.quit()

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2026 CODEPRJ.COM