GVKun编程网logo

Android-使用Appium和Selenium网格进行并行测试

9

本文将分享Android-使用Appium和Selenium网格进行并行测试的详细内容,此外,我们还将为大家带来关于3分钟了解Appium:使用appium做Android手机自动化测试!、Andro

本文将分享Android-使用Appium和Selenium网格进行并行测试的详细内容,此外,我们还将为大家带来关于3分钟了解Appium:使用appium做Android手机自动化测试!、Android Studio 不会运行我对 Selenium/Carina/Appium 的测试单击运行按钮没有任何错误、android – 如何使用appium将屏幕截图与参考图像进行比较、Android-使用Appium和Protractor在设备浏览器上并行执行的相关知识,希望对你有所帮助。

本文目录一览:

Android-使用Appium和Selenium网格进行并行测试

Android-使用Appium和Selenium网格进行并行测试

我正在尝试使用appium&在2个设备上运行并行测试.硒网格,但由于某种原因,它仅在第一台节点服务器(和第一台设备)上运行,而在第二台服务器上什么也没有发生.

另外,如果我关闭第一台服务器并运行测试,那么该测试将在第二台服务器上运行,因此服务器应该没有任何问题.

是否必须提供一些参数才能将其设置为parallel?

谢谢您的帮助 !

这是我的文件:

第一个服务器json文件:

{
  "capabilities":
  [
    {
      "browserName": "SamsungS6",
      "deviceName": "04157df40862d02f",
      "version":"6.0.1",
      "maxInstances": 3,
      "platform":"ANDROID"
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4491/wd/hub",
    "host": "localhost",
    "port": 4491,
    "maxSession": 5,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4433,
    "hubHost": "localhost"
   }
}

第二个服务器json文件:

{
  "capabilities":
  [
    {
      "browserName": "OnePlusOne",
      "deviceName": "14b2b276",
      "version":"6.0.1",
      "maxInstances": 3,
      "platform":"ANDROID",
      "platformName":"ANDROID"
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4490/wd/hub",
    "host": "localhost",
    "port": 4490,
    "maxSession": 5,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4433,
    "hubHost": "localhost"
  }
}

运行硒网格:

java -jar selenium-server.jar -role hub -port 4433 

运行第一个方案

node.exe node_modules\appium\bin\appium.js --nodeconfig myfirstscenario.json -p 4490 -U 14b2b276 -bp 5490 --chromedriver-port 6490

运行第二种情况

node.exe node_modules\appium\bin\appium.js --nodeconfig mysecondscenario.json -p 4491 -U 04157df40862d02f -bp 5491 --chromedriver-port 6491

考试

@BeforeTest(alwaysRun = true)
public void setUp(){

    try {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "ANDROID");
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "");
        capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, appPackage);
        capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, appActivity);

        driver = new AndroidDriver(new URL("http://localhost:4433/wd/hub"), capabilities);
        new webdriverwait(driver, 60);
    } catch (MalformedURLException e) {
        e.printstacktrace();
    }

}

@Test
public void test(){
    System.out.println("hello world");

    try {
        sleep(6000);
    } catch (InterruptedException e) {
        e.printstacktrace();
    }
}


@AfterTest(alwaysRun = true)
public void closeDriver(){
    driver.quit();
}

解决方法:

问题是因为您既未提供DesiredCapabilities中唯一的内容,也未添加自定义CapabilityMatcher.默认情况下,网格仅使用browserName,版本和平台来决定将测试路由到哪个节点.

这是解决问题的一种方法.将一个名为“ applicationName”的新密钥添加到您的nodeConfig.json中,并分别设置“ OnePlusOne”和“ SamsungS6”的值.然后,将一个名为“ applicationName”的新功能添加到测试中所需的功能,然后分别设置“ OnePlusOne”和“ SamsungS6”的值.之后,您的测试将被路由到正确的设备.

您可以在我的博客文章here中了解有关此内容的更多信息.

3分钟了解Appium:使用appium做Android手机自动化测试!

3分钟了解Appium:使用appium做Android手机自动化测试!

网上写Appium相关资料的文章已经多如牛毛,今天我所提到的内容或许是你不太了解的,希望能在3分钟时间为各位看官带来不一样的收获~~

Appium这个听起来既生疏也熟悉的自动化测试工具,比起原生的UiAutomator可能是异常的不起眼,可是却是有自身独当一面的能力,可以完成许多高难度作业,完成UiAutomator不可能完成的一些任务,可以说appium丰富了UiAutomator的功能,使UiAutomator可以完成更多的任务。

Appium到底有哪些优势会让我们优先选择它去做自动化呢?

一、一句话概括Appium

一款应用于移动端的自动化测试框架,支持跨平台应用,Native、Hybird、Mobile Web都支持。其特点概括一下:

跨平台只要一套代码

不需要设置签名,不污染源代码

不需要项目源代码就可以测试

多语言支持

可支持多种通用框架

完全开源,社区活跃

二、初步认识appium工作过程

1.appium有C/S模式

2.appium是基于webdriver协议对移动设备自动化api扩展而成的,所有具有和webdriver一样的特性,比如多语言支持。

3.webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息。

4.对于Android来说,4.2以后是基于UiAutomator框架实现查找注入事件的,4.2以前则是instrumentation框架的,并封装成一个叫Selendroid提供服务。

5.客户端只需要发送http请求实现通讯,意味着客户端就是多语言支持的。

6.appium服务端是node.js写的,所以安装那个平台都是先安装node,然后npm install -g appium(需要FQ)。

三、环境搭建

步骤:

1.java开发环境JDK

2.android SDK(platform/platform tools/tools/build tools)

3.python下载安装(pip)

4.appium下载安装(服务端+客户端)

5.安装appium-python-client

6.安装unittest

第一步

安装JDK,安装完成后配置环境变量。

cmd下java -version检查环境变量是否配置成功。

第二步

安装Android SDK(安卓软件开发包),测试Android手机必然是要安装Android SDK。

下载地址:

解压后将文件夹添加到环境变量中,添加环境变量,必须创建一个名为ANDROID_HOME的变量。

双击SDK Manager,选装工具。必装:Tools文件夹下Android SDK Platform-tools和Android SDK Build-tools,Android SDK Tools可以选择是否更新,建议网速OK直接更新。GoogleFQ安装:Extras文件夹下所有的全部安装。

Path环境变量中添加ANDROID_HOME、tools、platform-tools、build-tools目录。保存修改。

环境变量配置完成后,连接安卓手机,并将Android手机的开发者选项-USB调试打开。

在CMD下执行,adb devices,出现下图样式则代表通过adb命令,获取到了连接在电脑上Android手机的UDID。

adb devices在获取连接的安卓手机时,一定会遇到很多坑,这里我们梳理下可能会遇到的坑。

1、手机USB调试一定要打开。

2、多找两根USB线,排除线的问题。

3、多换几个USB接口,排除USB个别接口不好使问题(如:3.0 与 2.0)

4、驱动程序,通过设备管理器查看是否安装驱动或驱动不是最新。

5、更新adb_usb.ini文件,少数电脑不能识别Android手机时,可以将设备管理器下的Android手机的VID、PID增加到adb_usb.ini文件中。

将VID、PID中“_”后的4位数增加到adb_usb.ini下(注:adb_usb.ini默认在C盘当前用户家目录下的.android目录下)

理论上这些操作都操作一遍后,基本adb devices就可以找到Android手机了。

第三步

安装node.js,之后就可以直接通过npm安装Appium。(注:npm类似于Python的pip,一个非官方包管理器)

官方下载地址:

根据自己的操作系统下载不同版本的node.js

node.js的安装一路傻瓜式next就可以了,安装成功后会自动添加环境变量。

安装成功后,检测下npm是否可用。

第四步

安装appium服务端,可通过cmd 下输入 npm install -g appium 进行安装。

如果npm install -g appium特别慢,无法下载时,可以用国内的镜像npm --registry install -g appium

安装如果失败可以尝试通过cnpm安装appium

通过npm命令安装cnpm

npm install -g cnpm --registry=

通过cnpm安装appium

cnpm install -g appium --no-cache

安装成功后,通过appium -v 查看当前appium版本,直接输入appium则启动appium server端。

如果仍无法下载appium服务端,那就只能在Appium官方网站上下载操作系统相应的Appium版本。

 

当前最新版本为 AppiumForWindows_1_4_16_1.zip ,注意这是一个 Windows 版本,如果你的电脑为MAC请下载 appium-1.5.3.dmg 。

再来提供一个百度网盘的下载链接:

我们以 Windows 为例,将下载的 AppiumForWindows.zip 进行解压,点击 appium-installer.exe 进行安装。

双击启动,appium server 界面如下。

最后,打开Windows命令提示符,输入“appium-doctor”命令,如果出现以下提示,说明你Appium所需要的各项环境都已准备完成。

注:如果提示:“appium-doctor”不是内部或外部命令,找到Appium的安装目录,例如:

C:\Program Files\Appium\node_modules\.bin

添加到环境变量path下面。

第五步

安装appium客户端,用于抓取app上定位信息。

双击安装,安装成功后左面会有一个appium的快捷方式。

到这里Windows-Android-appium的所有环境就已经搭建完成了。

总结:

Appium目前是一种比较先进的测试工具,可以覆盖到UiAutomator所涉及的各个方面,还能完成webview的自动化测试,但是部署环境较复杂,而且出现很多的异常情况很难去定位到问题,同时网上资料也比较匮乏,导致其普及范围不是很广,希望这篇文章可以帮助需要用到appium工具的同学,快速越过搭建环境这一关,快速投入到混合型App的自动化测试当中。


上面是我收集的一些视频和面试题资料。

对于软件测试的的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你

关注我的微信公众号【程序员二黑】免费获取
 

Android Studio 不会运行我对 Selenium/Carina/Appium 的测试单击运行按钮没有任何错误

Android Studio 不会运行我对 Selenium/Carina/Appium 的测试单击运行按钮没有任何错误

如何解决Android Studio 不会运行我对 Selenium/Carina/Appium 的测试单击运行按钮没有任何错误?

我在 Android Studios 中遇到过这个问题,现在几次运行按钮和调试按钮在点击时不执行任何操作。也没有错误填充,所以我在试图弄清楚这是什么时遇到了问题。第一次尝试后,该按钮也会变灰。在过去,这最终通过重新启动/重新构建 gradle 等解决了问题,但现在它不起作用。

这次开始不工作是在我将 Android studio 更新到 4.2.2 之后

我尝试过的事情:

  • 在 AndroidStudio 中转到文件->InvalidateCachesAndRestart -> 尝试同步 产品与 Gradle。 -> 一旦应用程序的运行按钮变为绿色 被选中。然后给Run

  • 重新启动 Android Studios

  • 删除gradle文件夹

  • 检查 SDK 项目的更新

  • 删除整个 repo 并重新克隆

  • 尝试了这篇帖子中的很多答案:Android Studio Run button does nothing

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – 如何使用appium将屏幕截图与参考图像进行比较

android – 如何使用appium将屏幕截图与参考图像进行比较

我能够使用下面的代码成功地截取我的应用程序JainLibrary的页面之一.我正在使用junit和appium.

public String Screenshotpath = "Mention the folder Location";
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile,new File(Screenshotpath+"Any name".jpg"));

现在我想将屏幕截图与参考图像进行比较,以便我可以继续使用测试用例.

最佳答案
一个简单的解决方案是将每个像素与参考屏幕截图进行比较:

// save the baseline screenshot

driver.get("https://www.google.co.uk/intl/en/about/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile,new File("c:\\temp\\screenshot.png"));

// take another screenshot and compare it to the baseline

driver.get("https://www.google.co.uk/intl/en/about/");
byte[] pngBytes = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);

if (IsPngEquals(new File("c:\\temp\\screenshot.png"),pngBytes)) {
    System.out.println("equals");
} else {
    System.out.println("not equals");
}
public static boolean IsPngEquals(File pngFile,byte[] pngBytes) throws IOException {
    BufferedImage imageA = ImageIO.read(pngFile);

    ByteArrayInputStream inStreamB = new ByteArrayInputStream(pngBytes);
    BufferedImage imageB = ImageIO.read(inStreamB);
    inStreamB.close();

    DataBufferByte dataBufferA = (DataBufferByte)imageA.getRaster().getDataBuffer();
    DataBufferByte dataBufferB = (DataBufferByte)imageB.getRaster().getDataBuffer();

    if (dataBufferA.getNumBanks() != dataBufferB.getNumBanks()) {
        return false;
    }

    for (int bank = 0; bank < dataBufferA.getNumBanks(); bank++) {
        if (!Arrays.equals(dataBufferA.getData(bank),dataBufferB.getData(bank))) {
            return false;
        }
    }

    return true;
}

请注意,您需要将参考屏幕截图另存为PNG. JPEG格式将改变像素.

Android-使用Appium和Protractor在设备浏览器上并行执行

Android-使用Appium和Protractor在设备浏览器上并行执行

我正在尝试在多个Android设备的Chrome浏览器上运行测试.我正在将量角器与鸦片一起使用.我正在启动2个具有不同端口(即4723和4725)的appium服务器,并使用2个设备信息指定多功能.我同时尝试了模拟器和真实设备.当我运行配置文件时,即使我指定了设备的UDID,两台Appium服务器也都试图访问一台设备.我对量角器非常陌生.谁能帮我?下面是我的配置文件

config.js

exports.config = {

      framework: 'jasmine',
      specs: ['Sample.js','Sample_1.js'],

      multiCapabilities: [{
          seleniumAddress: 'http://localhost:4723/wd/hub',
          browserName: 'Chrome',
           // 'appium-version': '1.4.16',
            platformName: 'Android',
            platformVersion: '6.0.1',
            deviceName: 'abc',
            UDID:'abc',
            shardTestFiles: true
        }, {
             seleniumAddress: 'http://localhost:4725/wd/hub',
                browserName: 'Chrome',
               // 'appium-version': '1.0',
                platformName: 'Android',
                platformVersion: '4.4.4',
                deviceName: 'def',
                UDID:'def',
                shardTestFiles: true
        }],  


      onPrepare: function () {

      }
    };

解决方法:

我前段时间有同样的问题.

我修复了两个不同的config.js文件:

>一种用于在端口4723上使用appium的移动设备config-mobile-4723.js
>其他用于在端口4725上使用appium的移动设备config-mobile-4725.js

您只需要将config.js分为两个文件config-mobile-4723.js和config-mobile-4725.js,然后使用量角器config-mobile-4723.js&并行运行两个命令.量角器config-mobile-4725.js

我不确定这是否是最好的解决方案,但它是否有效.

更多信息https://github.com/aluzardo/protractor-cucumber-tests

今天关于Android-使用Appium和Selenium网格进行并行测试的介绍到此结束,谢谢您的阅读,有关3分钟了解Appium:使用appium做Android手机自动化测试!、Android Studio 不会运行我对 Selenium/Carina/Appium 的测试单击运行按钮没有任何错误、android – 如何使用appium将屏幕截图与参考图像进行比较、Android-使用Appium和Protractor在设备浏览器上并行执行等更多相关知识的信息可以在本站进行查询。

本文标签: