Selenium Grid

一个用于分布式测试的工具,它允许你在多个机器上并行运行测试。通过 Selenium Grid,你可以同时在多个浏览器和操作系统上执行测试,从而加快测试速度并提高测试覆盖率。

主要特点:#

  1. 并行执行:可以在多个节点上同时运行测试,显著减少测试时间。
  2. 跨浏览器测试:支持在不同的浏览器(如 Chrome、Firefox、Edge 等)上运行测试。
  3. 跨平台测试:支持在不同的操作系统(如 Windows、macOS、Linux 等)上运行测试。
  4. 集中管理:通过一个中心节点(Hub)来管理多个测试节点(Node),方便配置和监控。

基本架构:#

  • Hub:中心节点,负责接收测试请求并将其分发到合适的节点。
  • Node:测试节点,负责执行实际的测试任务。每个节点可以配置不同的浏览器和操作系统。

示例:#

假设你有一个测试套件需要在 Chrome、Firefox 和 Edge 上运行,你可以配置一个 Selenium Grid,其中包含三个节点,每个节点分别运行不同的浏览器。然后,你可以通过 Hub 将测试分发到这些节点上并行执行。

podman-compose部署#

version: '3'
services:
  selenium-hub:
    image: selenium/hub:latest
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
    environment:
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    security_opt:
      - no-new-privileges:true

  selenium-node-chrome:
    image: selenium/node-chrome:latest
    shm_size: 1g
    dns:
      - 8.8.8.8
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    depends_on:
      - selenium-hub
    security_opt:
      - no-new-privileges:true

Python代码#

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

from settings import RemoteBrowserAPIHost # hub 部署host

class Browser:
	def __init__(self, headless=True, account_info=None):
		self.headless = headless
		self.input_element = None
		self.account_info = account_info
		logger.debug(f"其它模式使用远程浏览器")
		op = webdriver.ChromeOptions()
		self.browser = webdriver.Remote(command_executor=RemoteBrowserAPIHost + "/wd/hub", options=op)
		self.session_id = self.browser.session_id
		RDS.update_browser_heartbeat(self.session_id)
		logger.info(f"浏览器 连接成功!")

查看运行状态#

操作Sessions链接: Selenium Grid

机器学习库

Python 机器学习库 👽#

Plotly#

与matplotlib 都是绘图工具,不过效果炫一些,我也没画过,所以只放链接,不放实例了 Plotly Python Library : https://plot.ly/python/

matplotlib#

import matplotlib.pyplot as plt

参数等太多,链接最可靠#

pyplot参数

还是粘一些常用的: marker 属性(下面写在分号里呦) o . v ^ < > 1 2 3 4 8 s p * h H + x D d | _ 之类

画出一些“花儿”

绘图#

plt.plot(x, y)
# 在y之后可添加参数,例如常用的label = ‘IamLabel’之类
# 线的样式、颜色 :b: blue  g: green    r: red  c: cyan m: magenta
y: yellow   k: black    w: white
'-' : solid , '--' : dashed, '-.' : dashdot ':' : dotted    '   '', ' '   ': None
# 粗细 lw=3 更改数字
# 数值折点显示样式 marker = ‘o’   

plot.show()

绘制图表#

1#

plt.figure(1)
绘图
plt.figure(2)
绘图

2(未测试)#

plt.figure(1)   # 创建图表1
plt.figure(2)   # 创建图表2
hi1 = plt.subplot(211)  # 在图表2中创建子图1
hi2 = plt.subplot(212)  # 在图表2中创建子图2

一表多图#

pCapital = plt.subplot(4, 1, 1)
    pCapital.set_ylabel("capital")
    pCapital.plot(d['capitalList'], color='r', lw=0.8)
plt.show()

标注点#

eg1#

for w, m in enumerate(self.lowestPrice):
        if w % 120*10 == 0:
            plt.plot([w, w], [m, self.highestPrice[w]], linestyle = '--')
        #plt.scatter(self.dealPoints,color = 'c')
for i in self.dealPoints:           
    plt.scatter([i[0]], [i[1]], color = 'c')    
    for ii in self.ydealPoints:
    plt.scatter([ii[0]], [ii[1]], color = 'm')
    
plt.title('Tick & TradePoint')
plt.legend()
plt.show()

plt.legend() # show() 之前不加这句是不会显示出标注的呦