> 文档中心 > Appium 分布式selenium grid

Appium 分布式selenium grid


selenium grid是什么呢?

selenium主要由三个工具组成:WebDriver、IDE、Grid。WebDriver 使用浏览器提供的 api 来控制浏览器,就像用户在操作浏览器,不具有侵入性。 IDE 是 Chrome 和 Firefox 扩展插件,可以录制用户在浏览器中的操作。Grid 用于 Selenium分布式,你可以在多个浏览器和操作系统运行测试用例。

Appium 分布式selenium grid

环境/工具准备

  • java环境
  • selenium-server-standalone-3.7.1.jar
  • mumu模拟器
  • Appium Desktop V1.15.1
  • node.js环境

下载jar

下载地址: http://selenium-release.storage.googleapis.com/index.html

这里以selenium-server-standalone-3.7.1.jar为例

启动服务

下载完成之后,就启动服务(启动服务之前,需要有java环境),在jar所在路径下执行一下的命令:

java -jar selenium-server-standalone-3.7.1.jar  -role hub# -role参数表示指定当前角色是为hub

Appium 分布式selenium grid
Appium 分布式selenium grid

浏览器访问grid

在浏览器输入以下链接:

http://127.0.0.1:4444/grid/console

注册node

注册node之前需要先获取模拟器的相关信息

(1)连接模拟器

adb connect 127.0.0.1:7555

Appium 分布式selenium grid

(2)查看设备

adb devices

由以下图可以得到mumu模拟器的地址和端口号
Appium 分布式selenium grid
(3)新建main.json
在json中的配置即为node注册到hub所需要的信息,main.json内容如下:

{  "capabilities":      [ {   "deviceName": "127.0.0.1:7555",   "version":"6.0",   "maxInstances": 3,   "platform":"ANDROID",   "browserName": "" }      ],  "configuration":  {    "cleanUpCycle":2000,    "timeout":30000,    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",    "hub":"127.0.0.1:4444/grid/register",    "url":"http://127.0.0.1:4723/wd/hub",    "host": "127.0.0.1",    "port": 4723,    "maxSession": 3,    "register": true,    "registerCycle": 5000,    "hubPort": 4444,    "hubHost": "127.0.0.1",    "hubProtocol": "http"  }}

安装node.js

如果本地有node.js环境的话,可以忽略,没有的话需要先安装node.js

node.js下载地址:

https://nodejs.org/en/download/releases/

推荐下载Node.js版本12.x(windows: msi文件,mac: pkg )

执行main.json

进入到Appium的js启动脚本路径,我的路径为
C:\Users\Acer\AppData\Local\Programs\Appium\resources\app\node_modules\appium\build\lib,通过执行如下Appium启动指令:

node main.js -a 127.0.0.1 -p 4723 -bp 4725 -U 127.0.0.1:7555 --nodeconfig F:\main.json# -a 127.0.0.1是appium服务的地址# -p 4723是appium的端口号# -U 127.0.0.1:7555是mumu模拟器的udid#--nodeconfig F:\main.json  这个是配置文件所在的目录

Appium 分布式selenium grid

执行脚本

#在雪球app操作以下的内容from appium import webdriverdesire_cap ={    "platformName": "android",    "deviceName": "127.0.0.1:7555",    "appPackage": "com.xueqiu.android",    #雪球首页    "appActivity": ".view.WelcomeActivityAlias",    #屏蔽弹框    "noReset": "true",    "browserName": ""}#获取驱动,创建链接# driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desire_cap)driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=desire_cap)driver.implicitly_wait(10)#点击搜索el2 = driver.find_element_by_id("com.xueqiu.android:id/tv_search")el2.click()#输入alibabael3 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text")el3.send_keys("alibaba")#点击搜索el4 = driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout[1]/android.widget.LinearLayout/android.widget.TextView[1]")el4.click()print("搜索成功")

Appium 分布式selenium grid