web自动化注册登录---(5)base公共类的编写(browsermobproxy)

上一篇excel 模块的编写

这一部分算是重中之重了,封装了一些page里面公用的方法和属性,包括driver,server等。做接口自动化的时候,我们用requests请求时可以将接口的返回值保存记录下来,那做web的时候有没有方法了?答案是有的,通过查阅资料,可以利用browsermobproxy 设置代理来抓取接口信息。后面有机会专门写篇文章来记录一下我的学习感受。代码:
# _*_conding:utf-8_*_
# 作者: 杨佳
# 创建时间: 2020/9/3 21:42
# 文件: base_function
import json
import time

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.chrome.options import Options
from browsermobproxy import Server # python 下载browsermobproxy库


class BaseFunction:
    def __init__(self):
    	# 建立一个服务,首先要在网上下载browsermob的压缩包,然后解压到本地
        self.server = Server(
            r"E:\Program Files\browsermob-proxy-2.1.4-bin\browsermob-proxy-2.1.4\bin\browsermob-proxy.bat")
        # 开启服务
        self.server.start()
        # 设置代理
        self.proxy = self.server.create_proxy()

        chrome_options = Options()
        chrome_options.add_argument('--proxy-server={0}'.format(self.proxy.proxy))
        # 请求https网址时,忽略证书问题
        chrome_options.add_argument('--ignore-certificate-errors')
        # 初始化浏览器
        self.driver = webdriver.Chrome(chrome_options=chrome_options)

	# 显示等待的公共方法
    def wait_element_visible(self, locator, timeout=20, poll_frequency=0.2):
        """显示等待"""
        wait = WebDriverWait(self.driver, timeout, poll_frequency)
        e = wait.until(expected_conditions.visibility_of_element_located(locator))
        return e

	def set_proxy(self,title):
        self.proxy.new_har(title, options={'captureContent': True})
        return self

	# 封装网址调用方法
    def get_url(self, url):
        self.driver.get(url)
        self.driver.implicitly_wait(5)
        return self

	# 记录调用url,以及业务操作时生成的接口信息
    def log_interface(self, path):
        time.sleep(3)
        result = self.proxy.har
        for entry in result['log']['entries']:
            if '.json' in entry.get('request').get('url'):
                print(entry)
                dat = json.dumps(entry, ensure_ascii=False, indent=2)
                # 将接口信息保存
                file = open('path', 'a+', encoding=" utf-8 ")
                file.write(dat)
                time.sleep(0.5)
                file.close()
        return self

	# 截图
    def screencap(self, path):
        self.driver.save_screenshot(path)

	# 关闭服务
    def server_stop(self):
        self.server.stop()
        return self
        
	# 开启服务
	def server_start(self):
		self.server.start()
		return self

	def driver_close(self):
        self.driver.quit()
        return self

下一篇:page类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值