Привет, вы можете создать класс Test Base как BaseTest.java , где вы будете инициализировать AndroidDriver и тестовый класс как Test.java который расширит BaseTest.java и использует драйвер для выполнения действий драйвера.
Ниже приведен пример кода для BaseTest.java:
package com.edf.mobile.tests;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeTest;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
public class BaseTest {
public AppiumDriver<?> driver;
//initialize your driver here
@BeforeTest
public void beforeTest(){
File f = new File("src");
File fs=new File(f,"ApiDemos-debug.apk");
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "192.168.56.101:5555");
cap.setCapability(MobileCapabilityType.APP,fs.getAbsolutePath());
try {
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
И класс Test.java выглядит следующим образом:
package com.edf.mobile.tests;
import io.appium.java_client.TouchAction;
import org.testng.annotations.Test;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
public class AppiumTest extends BaseTest {
@Test
public void test(){
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElementsByXPath("new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().textContains(\"Views\").instance(0))");
//driver.findElementByXPath("//android.widget.TextView[@text='Expandable Lists']").click();
TouchAction t = new TouchAction(driver);
t.tap(driver.findElementByXPath("//android.widget.TextView[@text='Expandable Lists']")).perform();
driver.findElementByXPath("//android.widget.TextView[@text='1. Custom Adapter']").click();
t.press(driver.findElementByXPath("//android.widget.TextView[@text='People Names']")).waitAction(Duration.ofSeconds(10)).release().perform();
//t.press(driver.findElementByXPath("//android.widget.TextView[@text='People Names']")).waitAction(Duration.ofSeconds(10)).release().perform();
System.out.println(driver.findElementByXPath("//android.widget.TextView[@text='Sample menu']").getText());
}
}
Примечание: если приведенный выше код не работает для вас, попробуйте изменить версию java-клиента appium, версию selenium на последнюю.Поскольку большинство методов в текущей версии устарели, вы можете обновить приведенный выше код.
Это должно дать вам представление о том, как использовать аннотации testng и как избавиться от основного метода java.
TestNG предоставляет множество других аннотаций, с которыми вы можете ознакомиться на официальном сайте testng.