Environment:
Windows 10
Tensorflow=1.1.0
python=2.7
global modules path = C:\Users\natha\AppData\Roaming\npm
appium = 1.19.1
node = 14.15.0
npm=6.14.9
test-ai-classifies=2.1.1
Pre-requisites;
Install Android SDK and configure ANDROID_HOME
Install Java SDK and configure JAVA_HOME
Appium installation steps:
npm install -g appium --drivers=xuitest,uiautomator2
npm install -g wd
appium -a 127.0.0.1 -p 4723
npm install -g appium-doctor
appium-doctor
(appium 1.19.1 is installed)
test-ai-classifier installation - globally:
npm install -g node-pre-gyp@0.11.0
npm install --unsafe-perm --verbose -g node-sass
npm install -g node-gyp --unsafe-perm=true
//NODE_GYP_FORCE_PYTHON=python
//NODE_GYP_FORCE_PYTHON=python2
npm install -g test-ai-classifier@2.1.1 --unsafe-perm=true --build-from-source --python=python2.7
test-ai-classifier installation - in appium path:
where appium
C:\Users\natha\AppData\Roaming\npm\appium
cd C:\Users\natha\AppData\Roaming\npm\node_modules\appium\
npm install node-pre-gyp@0.11.0
npm install --unsafe-perm --verbose node-sass
npm install node-gyp --unsafe-perm=true
npm install @tensorflow/tfjs-node@1.2.3
npm install test-ai-classifier@2.1.1
Global node modules configuration:
Where does npm install packages?
If you want to change the global modules path,
use npm config edit and put prefix = /my/npm/global/modules/prefix in the file
change from
; prefix=C:\Program Files\nodejs
to
; prefix=C:\Users\natha\AppData\Roaming\npm
How to validate test-ai-classifier installation?
[https://github.com/cloudgrey-io/appiumpro/issues/9][2]
If you go into the place where appium is installed, and run node, you'll get an interactive node.js prompt. From there, run require("test-ai-classifier");
If you get an error, it means the classifier module is not correctly installed and accessible to appium.
If not, it means everything is good, just make sure you restarted the appium server after installing it.
Create a java class in InteeliJ and add the following code:
package com.example.appium;
import io.appium.java_client.MobileBy;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.testng.annotations.Test;
import io.appium.java_client.android.AndroidDriver;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
public class TestAppiumAI {
private static AndroidDriver driver;
@Test
public void installTest() throws MalformedURLException, InterruptedException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "MotoG");
capabilities.setCapability("platformVersion", "7.1.1");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("udid", "ZH33L2Z6KL");
capabilities.setCapability("automationName", "UiAutomator2");
capabilities.setCapability("skipServerInstallation", "true");
capabilities.setCapability("autoGrantPermissions", "true");
capabilities.setCapability("noReset", "false");
capabilities.setCapability("appPackage", "com.android.settings");
capabilities.setCapability("appActivity","com.android.settings.Settings");
HashMap<String, String> customFindModules = new HashMap<String, String>();
customFindModules.put("ai", "test-ai-classifier");
capabilities.setCapability("customFindModules", customFindModules);
capabilities.setCapability("shouldUseCompactResponses", false);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
//driver.findElement(MobileBy.custom("ai:search")).click();
driver.findElement(MobileBy.custom("ai:bluetooth")).click();
driver.quit();
}
}
Create TestNG.xml as given below:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Regression" thread-count="2" parallel="tests" preserve-order="true" verbose="2">
<test name="Real Device1">
<classes>
<class name="com.example.appium.TestAppiumAI"/>
</classes>
</test>
</suite>
Start Appium server from command line:
appium -a 127.0.0.1 -p 4723
Right click TestNG.xml, and execute.
Observe Bluetooth under Settings app is getting selected.
Please feel free to take the source code/project from
[https://github.com/anbunathan/appium-examples/blob/master/Template1/src/test/java/com/example/appium/TestAppiumAI.java][2]
Also, I have added a video:
https://youtu.be/CFDSejLJEQY