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

5

我正在使用:

appiumDriver.findElement(By.id("com.XXX.keyword:id/nextButton"));

但是有时我们会有调试版本,所以我们会有类似“com.XXX.keyword.debug”的东西。因此,我想在测试运行之前获取包名称,以便测试可以独立于此。
我尝试过:
driver.currentActivity()

但它只返回了类似于".MainActivity"的东西。

有没有什么方法可以使用Appium获取包名呢?

非常感谢。


https://github.com/appium/appium/issues/4609 - USKMobility
1
为什么你要同时使用包名和ID?只使用“nextButton”即可。 - Chandrashekhar Swami
1
@ShekharSwami,哦,老兄,你救了我的一天。我使用了Appium Inspector,并看到了属性:resource_id="com.XXX.keyword:id/nextButton",然后我假设这是完整的id值。非常感谢。如果你能把它写成答案,我会接受的。 - Ragnarsson
好的,我会翻译它 :) - Chandrashekhar Swami
2个回答

3

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


你有什么想法为什么 elementByIdOrNull() 不能正常工作?我需要传递完整的包名和 ":id/" 才能找到元素。 - Joshua Pinter
这在许多情况下都是正确的,但有时,例如使用elementByIdOrNull和XPath时,您需要提供完整的包名称和“:id /”。对于这些情况,请参见@RajKumar的答案。 - Joshua Pinter
它只在使用按id查找元素时有效。但是如果我们需要在XPath中使用id,则需要使用完整的id。 - Chandrashekhar Swami

2

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

Original Answer翻译成"最初的回答"

driver.getCurrentPackage();

你正在使用的以下语句将会给你提供活动名称: "最初的回答"。
driver.currentActivity();

方法尚未实现。 - Dimitri Kopriwa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接