亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Openshift部署zalenium(容器化的selenium)及Python自動測試

標簽:
Kubernetes

什么是zalenium

zalenium是一个Selenium Grid扩展,用Docker容器动态扩展你的本地网格。它使用docker-selenium在本地运行Firefox和Chrome中的测试。官网地址

创建Service Account

# 创建ClusterRole# oc create -f zalenium-role.json{    "kind": "ClusterRole",    "apiVersion": "v1",    "metadata": {        "name": "zalenium-role"
    },    "rules": [
        {            "verbs": [                "create",                "list",                "get",                "delete",                "exec"
            ],            "attributeRestrictions": null,            "apiGroups": [                ""
            ],            "resources": [                "pods"
            ]
        },
        {            "verbs": [                "list",                "create",                "delete",                "get"
            ],            "attributeRestrictions": null,            "apiGroups": [                ""
            ],            "resources": [                "services"
            ]
        },
        {            "verbs": [                "create",                "get"
            ],            "attributeRestrictions": null,            "apiGroups": [                ""
            ],            "resources": [                "pods/exec"
            ]
        }
     ]
}
oc create -f zalenium-role.jsonoc  create sa zaleniumoc adm policy add-scc-to-user anyuid -z zaleniumoc adm policy add-role-to-user zalenium-role -z zalenium

部署zalenium

oc run zalenium --image=dosel/zalenium \
        --env="ZALENIUM_KUBERNETES_CPU_REQUEST=250m" \
        --env="ZALENIUM_KUBERNETES_CPU_LIMIT=500m" \
        --env="ZALENIUM_KUBERNETES_MEMORY_REQUEST=1Gi" \
        --overrides='{"spec": {"template": {"spec": {"serviceAccount": "zalenium"}}}}' \
        -l app=zalenium,role=hub --port=4444 -- \
        start --desiredContainers 2 --seleniumImageName elgalu/selenium:latest

创建Service

#创建相应的service# oc create -f zalenium-service.yamlapiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: zalenium
  name: zalenium
spec:
  ports:
  - name: 4444-tcp
    port: 4444
    protocol: TCP
    targetPort: 4444
  - name: 4445-tcp
    port: 4445
    protocol: TCP
    targetPort: 4445
  selector:
    app: zalenium
    role: hub
  sessionAffinity: None  type: ClusterIP
status:
loadBalancer: {}

创建Router

# oc create -f ./zalenium-route.yamlapiVersion: v1
kind: Route
metadata:
  name: zalenium
  annotations:
    haproxy.router.openshift.io/timeout: 60s
spec:
  host: zalenium.example.com
  port:
    targetPort: 4444-tcp
  to:
    kind: Service
name: zalenium

访问被管理selenium状态

http://zalenium-zalenium.demo.example.com/grid/admin/live

webp

zalenium演示.PNG


Python具体实现自动测试

安装selenium模块

pip install selenium

代码

# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.remote.remote_connection import RemoteConnection# 创建远程连接selenium gridremoteconnection = RemoteConnection('http://zalenium-zalenium.demo.example.com/wd/hub', keep_alive=False,
                                    resolve_ip=False)

driver = webdriver.Remote(command_executor=remoteconnection,
                          desired_capabilities={                              'browserName': "chrome",                              'video': 'True',                              'platform': 'LINUX',                              'platformName': 'LINUX'
                          })try:
    driver.implicitly_wait(30)
    driver.maximize_window()
    driver.get("http://www.baidu.com")    assert u'百度一下,你就知道' in driver.title
    kw_input = driver.find_element_by_id('kw')
    su_button = driver.find_element_by_id('su')
    kw_input.clear()   # 输入关键字Openshift
    kw_input.send_keys('Openshift')
    su_button.click()finally:
    driver.quit()

说明
创建RemoteConnection时需要设置keep_alive=False及设置resolve_ip=False。
resolve_ip默认为True,它会解析senelium grip服务器的ip,便通过Ip去访问。我们知道Openshift的应用是无法使用ip来访问的,必须使用域名。所以需要将resolve_ip设置为False。当然,如果我们部署zalenium中的service使用nodeport将4444端口暴露出去的resolve_ip可以使用默认值。

查看自动测试结果

http://zalenium-zalenium.demo.example.com/dashboard

webp

zalenium演示结果.PNG



作者:潘晓华Michael
链接:https://www.jianshu.com/p/c38abbcff5cc


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消