Appium搭配TestNG运行测试报错:无法向@Test注解方法注入AndroidDriver
报错原因
TestNG默认不会为无参数配置的@Test方法自动注入入参,你的代码存在两处不合理设计:
- 类中已经声明了全局
driver变量,且已在@BeforeClass初始化完成,不需要再给测试方法设置AndroidDriver类型入参 - 你没有为
Test1方法的入参配置@Parameters或@DataProvider注入规则,TestNG无法识别要传入的参数值,直接抛出注入失败错误
修复步骤
- 删除
Test1方法的AndroidDriver driver入参,方法内部直接调用全局已初始化的driver变量即可 - (可选优化)将
@After注解替换为@AfterClass,和@BeforeClass对应,避免单类多测试方法时,第一个方法跑完就销毁driver导致后续方法空指针
修复后完整代码
@Listeners(ExtentITestListenerAdapter.class) public class TestNG { public AppiumDriver <AndroidElement>driver; @Test public void Test1() { MobileElement el1 = (MobileElement) driver.findElementById("skip_button"); el1.click(); driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); TouchAction touchAction = new TouchAction(driver); touchAction.tap(new PointOption().withCoordinates(725, 993)).perform(); touchAction.tap(new PointOption().withCoordinates(293, 1005)).perform(); touchAction.tap(new PointOption().withCoordinates(1175, 1531)).perform(); touchAction.tap(new PointOption().withCoordinates(1166, 2029)).perform(); touchAction.tap(new PointOption().withCoordinates(763, 2036)).perform(); MobileElement el2 = (MobileElement) driver.findElementById("continue_button"); el2.click(); } @BeforeClass public void setUp() throws MalformedURLException { DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability("platformName", "Android"); desiredCapabilities.setCapability("deviceName", "Pixel_4_2"); desiredCapabilities.setCapability("automationName", "UiAutomator2"); desiredCapabilities.setCapability("udid", "emulator-5554"); desiredCapabilities.setCapability("app", "C:\\Users\\Diego\\Desktop\\flow-music-develop-dev-debug-v0.11.0-SNAPSHOT-209.apk"); desiredCapabilities.setCapability("ensureWebviewsHavePages", true); URL remoteUrl = new URL("http://localhost:4723/wd/hub"); driver = new AndroidDriver(remoteUrl, desiredCapabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } @AfterClass public void tearDown() { driver.quit(); } }
修改完成后重新运行测试即可解决注入报错问题。
内容的提问来源于stack exchange,提问作者Diego Britez
相关产品推荐
相关产品推荐

