zoukankan      html  css  js  c++  java
  • Selenium Grid操作使用指北

    官网下载地址:https://www.selenium.dev/downloads/

    本文中用的之前老版本,历史版本下载地址:https://selenium-release.storage.googleapis.com/index.html

    参考官方文档:https://www.selenium.dev/documentation/en/grid/setting_up_your_own_grid/

    一、实现串行多浏览器执行脚本
    1、启动selenium-server-standalone
    java -jar selenium-server-s
    2、脚本代码

     1 from selenium import webdriver
     2 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
     3 import time
     4 
     5 lists = ["chrome","firefox"]
     6 for i in lists:
     7     print(i)
     8     driver = webdriver.Remote(
     9         command_executor="http://127.0.0.1:4444/wd/hub",
    10         desired_capabilities={'platform':'ANY',
    11                               'browserName':i,
    12                               'vwesion':'',
    13                               'javascriptEnabled':True
    14                               }
    15     )
    16     driver.get("http://www.baidu.com")
    17     driver.find_element_by_id("kw").send_keys("hello")
    18     driver.find_element_by_id("su").click()
    19     time.sleep(3)
    20     driver.quit()

    二、selenium实现串行多节点(分布式)执行脚本

    1、启动多节点selenium-server-standalone
    主节点启动(代码所在主机)
    java -jar selenium-server-standalone-2.44.0.jar -role hub

    分支节点1启动(默认是5555端口,如果实际场景可视为比作北京机房,localhost改为主节点IP地址即可去注册主节点)
    java -jar selenium-server-standalone-2.44.0.jar -role node -port 5555 -hub http://localhost:4444

    分支节点2启动(默认端口占用了需要修改下端口,如果实际场景可视为是上海机房,localhost改为主节点IP地址即可去注册主节点)
    java -jar selenium-server-standalone-2.44.0.jar -role node -port 5556 -hub http://localhost:4444

    通过浏览器查看启动状态:http://代码所在主机/grid/console

    如下显示启动成功

    配置文件代码:

    1 def getconfig():
    2     d = {"http://192.168.109.1:5555/wd/hub":"chrome",
    3          "http://192.168.109.1:5556/wd/hub":"firefox"}
    4     return d

    实现代码:

     1 from selenium import webdriver
     2 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
     3 import time
     4 import config
     5 
     6 for host,browser in config.getconfig().items():
     7     print(host)
     8     print(browser)
     9     driver = webdriver.Remote(
    10         command_executor="http://127.0.0.1:4444/wd/hub",
    11         desired_capabilities={'platform':'ANY',
    12                               'browserName':browser,
    13                               'vwesion':'',
    14                               'javascriptEnabled':True
    15                               }
    16     )
    17     driver.get("http://www.baidu.com")
    18     driver.find_element_by_id("kw").send_keys("hello")
    19     driver.find_element_by_id("su").click()
    20     time.sleep(3)
    21     driver.quit()    

    三、appium实现串行多节点(分布式)执行脚本 

    1、启动主节点:java -jar selenium-server-standalone-2.44.0.jar -role hub

    2、appium的多节点需要一个json配置文件。

    如下为启动安卓的配置文件内容及启动成功展示:

     1 {
     2   "capabilities": [
     3     {
     4       "deviceName": "android",
     5       "version": "7.0",
     6       "maxInstances": 3,
     7       "platformName": "ANDROID"
     8     }
     9   ],
    10   "configuration": {
    11     "cleanUpCycle": 2000,
    12     "timeout": 30000,
    13     "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    14     "url": "http://192.168.56.1:4723/wd/hub",
    15     "host": "192.168.56.1",
    16     "port": 4723,
    17     "maxSession": 6,
    18     "register": true,
    19     "registerCycle": 5000,
    20     "hubPort": 4444,
    21     "hubHost": "192.168.56.1"
    22   }
    23 }

    如下为启动iOS的配置文件内容及启动成功展示:

     1 {
     2   "capabilities": [
     3     {
     4       "deviceName": "ios",
     5       "version": "13.5",
     6       "maxInstances": 3,
     7       "platformName": "IOS"
     8     }
     9   ],
    10   "configuration": {
    11     "cleanUpCycle": 2000,
    12     "timeout": 30000,
    13     "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    14     "url": "http://192.168.56.1:5723/wd/hub",
    15     "host": "192.168.56.1",
    16     "port": 5723,
    17     "maxSession": 6,
    18     "register": true,
    19     "registerCycle": 5000,
    20     "hubPort": 4444,
    21     "hubHost": "192.168.56.1"
    22   }
    23 }

     通过浏览器查看注册状态:http://代码所在主机/grid/console

    如上表示注册成功!

    运行代码自动寻找设备实现自动化:

     如上显示运行用例成功!!!

    总结:

    Selenium Grid方案:

    1、支持 Android iOS 模拟器

    2、支持 Web 浏览器

    3、支持所有兼容 WebDriver 协议的框架

    使用 grid 模式做自动化:

    1、与普通的自动化用例没有差别

    2、URL 修改为对应的 hub 的 URL 即可

    1  # self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
    2  self.driver = webdriver.Remote("http://192.168.56.1:4444/wd/hub", caps)

    Selenium Grid并不能实现并行执行脚本,如果想并行执行需要和多线程进行结合。

  • 相关阅读:
    django_视图层_便捷工具
    django_视图层_编写url
    04bootstrap_表单
    人工智能之线性代数
    人工智能之数组操作
    C 获取Linux系统信息
    RPM
    Windows 启动&关闭Hyper-V
    C 指定初始化器
    指针的运算
  • 原文地址:https://www.cnblogs.com/hanxiaobei/p/7352794.html
Copyright © 2011-2022 走看看