Java + Selenium + Appium automated testing

1. Start the test machine or Android emulator (Genymotion is commonly known as the fastest emulator in the world, you can install it on Baidu)


2. Start Appium (Appium environment installation can be done by Baidu yourself)
 


 

3. Install the application on Genymotion. As shown below, I installed a small computer application with the package name CalcTest.apk.

Installation steps: (Environment variables have been configured based on the Android SDK, you can use Baidu)
1. Win + R
2. CMD
3. adb devices -- check the operation and list the existing setting names
4. adb install F:\Appium\ CalcTest.apk -- Officially install the App

Test apk download address: https://files.cnblogs.com/files/yyym/CalcTest.apk


As shown below: 192.168.229.101:5555 is the Genymotion virtual machine I just started
 


 

4. After the installation is successful, return to Genymotiong and you will see that the installation has been successful.
 


Open the app and you'll see it's actually a simple calculator


5. Open Eclipse to create a Maven project and use the uiautomatorviewer tool (included in the Android SDK toolkit) to perform basic element positioning operations. The element positioning method has been explained in detail before.
1. Open the Android SDK and you can find the path: android-sdks\tools as follows (get the App package name and decompile it: aapt dump badging apk path)
 


2. Open uiautomatorviewr.bat


3. Write the basic code as follows for reference only:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

package appium_demo;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.android.AndroidDriver;

/** * @author 李小卫 E-mail:[email protected] @date 创建时间2018年2月11日上午10:10:02 */

public class calc_demo {

    public static void main(String[] args) throws MalformedURLException {

        AndroidDriver driver;

        DesiredCapabilities des = new DesiredCapabilities();

  //    des.setCapability("automationName", "Appium");//Selendroid //自动化的模式选择

 //     des.setCapability("app", "C:\\software\\CalcTest.apk");//配置待测试的apk的路径

//      des.setCapability("browserName", "chrome");  //h5

        des.setCapability("platformName""Android");//平台名称

        des.setCapability("platformVersion""4.4");//手机操作系统版本

        des.setCapability("udid""192.168.229.101:5555");//连接的物理设备的唯一设备标识

        des.setCapability("deviceName""S4");//使用的手机类型或模拟器类型  UDID

         

        des.setCapability("appPackage""com.sky.jisuanji");//App安装后的包名,注意与原来的CalcTest.apk不一样

        des.setCapability("appActivity"".JisuanjizixieActivity");//app测试人员常常要获取activity,进行相关测试,后续会讲到

         

        des.setCapability("unicodeKeyboard""True");//支持中文输入

        des.setCapability("resetKeyboard""True");//支持中文输入

        des.setCapability("newCommandTimeout""10");//没有新命令时的超时时间设置

        des.setCapability("nosign""True");//跳过检查和对应用进行 debug 签名的步骤

         

        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), des);//虚拟机默认地址

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//设置超时等待时间,默认250ms

        driver.findElement(By.id("com.android.calculator2:id/digit1")).click();//定位'1'

        driver.findElement(By.id("com.android.calculator2:id/plus")).click();//定位'+'

        driver.findElement(By.id("com.android.calculator2:id/digit6")).click();//定位'6'

        driver.findElement(By.id("com.android.calculator2:id/equal")).click();//定位'='

    }

}   


6. Use TestNG to write formal test cases and start executing the test

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

package appium_operate;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.Assert;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.DataProvider;

import org.testng.annotations.Test;

import io.appium.java_client.android.AndroidDriver;

/** * @author 李小卫 E-mail:[email protected] @date 创建时间2018年2月11日上午10:30:02 */

public class CalcTest {

    AndroidDriver driver;

    @BeforeTest

    public void setUp() throws MalformedURLException{

        DesiredCapabilities des = new DesiredCapabilities();

//      des.setCapability("app", "c:\\");

        des.setCapability("platformName""Android");

        des.setCapability("platformVersion""4.4");

        des.setCapability("udid""192.168.43.101:5555");

        des.setCapability("deviceName""s4");

        des.setCapability("appPackage""com.android.calculator2");//com.android.contacts

        des.setCapability("appActivity"".Calculator");//.activities.PeopleActivity

        des.setCapability("unicodeKeyboard""True");

        des.setCapability("resetKeyboard""True");

        des.setCapability("newCommandTimeout""15");

        des.setCapability("nosign""True");

        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),des);

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    }

    @Test(enabled = false)

    public void add() {

        driver.findElement(By.xpath("//android.widget.Button[@text='5']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='+']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='8']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='=']")).click();

        String value = driver.findElement(By.xpath("//android.widget.EditText[@class='android.widget.EditText']")).getAttribute("text");

        Assert.assertEquals(value, "13");      

    }

    @Test(enabled = false)

    public void sub() {

        driver.findElement(By.xpath("//android.widget.Button[@text='1']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='0']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='-']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='8']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='=']")).click();

        String value = driver.findElement(By.xpath("//android.widget.EditText[@class='android.widget.EditText']")).getAttribute("text");

        Assert.assertEquals(value, "2");       

    }

    @Test(enabled = false)

    public void mul() {

        driver.findElement(By.xpath("//android.widget.Button[@text='5']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='×']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='8']")).click();

        driver.findElement(By.xpath("//android.widget.Button[@text='=']")).click();

        String value = driver.findElement(By.xpath("//android.widget.EditText[@class='android.widget.EditText']")).getAttribute("text");

        Assert.assertEquals(value, "40");      

    }

     

    @DataProvider(name="testdata")

    public Object[][] getData(){

        return new Object[][]{ { "20","80","100","+"},{ "90","3","270","×"},{ "6","2","3","÷"}};

    }

     

    @Test(dataProvider = "testdata")

    public void calcTestcase(String num1,String num2,String result,String calcType){

        for(char num:num1.toCharArray()){

            driver.findElement(By.xpath("//android.widget.Button[@text='"+String.valueOf(num)+"']")).click();

        }

        driver.findElement(By.xpath("//android.widget.Button[@text='"+calcType+"']")).click();

        for(char num:num2.toCharArray()){

            driver.findElement(By.xpath("//android.widget.Button[@text='"+String.valueOf(num)+"']")).click();

        }

        driver.findElement(By.xpath("//android.widget.Button[@text='=']")).click();

        String value = driver.findElement(By.xpath("//android.widget.EditText[@class='android.widget.EditText']")).getAttribute("text");

        Assert.assertEquals(value, result);    

    }

}

[Full 200 episodes] A collection of super detailed advanced tutorials on automated testing of Python interfaces, truly simulating the actual combat of enterprise projects.

Guess you like

Origin blog.csdn.net/mashang123123123/article/details/132740986