Java Appium驱动程序以编程方式获取应用程序包名称

Java Appium驱动程序以编程方式获取应用程序包名称,java,android,automated-tests,appium,Java,Android,Automated Tests,Appium,我正在使用: appiumDriver.findElement(By.id("com.XXX.keyword:id/nextButton")); 但有时我们有调试版本,所以我们有类似“com.XXX.keyword.debug”的东西。所以我想在测试运行之前获得包名,这样测试就可以独立于此 我试过了 driver.currentActivity() 但它只返回“.MainActivity”之类的内容 有没有办法用Appium获取包名 非常感谢。查找元素不需要包名。只需复制粘贴id而不复制包名

我正在使用:

appiumDriver.findElement(By.id("com.XXX.keyword:id/nextButton"));
但有时我们有调试版本,所以我们有类似“com.XXX.keyword.debug”的东西。所以我想在测试运行之前获得包名,这样测试就可以独立于此

我试过了

driver.currentActivity()
但它只返回“.MainActivity”之类的内容

有没有办法用Appium获取包名


非常感谢。

查找元素不需要包名。只需复制粘贴id而不复制包名。例如,在您的情况下,仅使用“
nextButton
”而不是“
com.XXX.keyword:id/nextButton

获取当前包名,请使用以下方法:

driver.getCurrentPackage();
您正在使用的以下语句将为您提供活动名称

driver.currentActivity();

为什么要同时使用包名和id?只使用“下一个按钮”。@ShekharSwami,哦,伙计,你救了我一天。我使用了Appium Inspector,看到了属性:resource_id=“com.XXX.keyword:id/nextButton”,然后我假设这是完整的id值。谢谢。如果你能写下来作为答案,我会接受的。好的。。可以这样做:)你知道为什么这不适用于
elementByIdOrNull()
?我需要传递完整的包名和“:id/”才能找到元素。这在许多情况下是正确的,但有时,就像
elementByIdOrNull
一样,在使用XPath时,需要提供完整的包名和“:id/”。对于这些情况,请参见@RajKumar的答案。只有在使用id的findelement时,它才有效。但是如果需要在XPath中使用id,则需要使用完整id。