java - 在 appium studio 上找到的元素不适用于 appium 独立服务器,反之亦然

标签 java appium appium-desktop

我通过桌面检查器捕获的元素无法在 appium studio 上工作,并且当我通过 appium 独立服务器运行时工作正常?

-这背后有什么原因吗?

-如果我从任何可以工作的地方捕获元素,无论任何服务器如何,有什么解决方案吗?

-如何编写下面代码的相对xpath?

/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[1]

我正在使用 appium 自动化应用程序,因此通过桌面检查器我捕获了一些元素。当我运行代码时,它工作正常。 但对于 xpath,我使用了 appium studio,因为在桌面检查器中它是绝对的 xpath,而且相当长。但是当我在 appium studio 上执行这个脚本时失败了,但它在 appium 独立服务器上运行良好。当我通过 appium studio 找到该元素并尝试在 appium 上运行时,发生了同样的事情。

-捕获的元素无法在两个服务器上运行?

//appium工作室

driver.findElement(By.xpath("//*[@id='action_contacts']")).click();-- 

id -action_contacts
resource id - com.appName.chatapp:id/action_contacts
class - android.widget.FrameLayout

//桌面检查器

driver.findElement(By.id("Contacts")).click();

accessibility id    Contacts
id  com.appName.chatapp:id/action_contacts
xpath   //android.widget.FrameLayout[@content-desc="Contacts"]

使用给定的搜索参数无法在页面上找到元素。

最佳答案

正确的定位器是:

  1. ID :driver.findElement(By.id("action_contacts")).click();
  2. XPath : driver.findElement(By.xpath("//*[contains(@id,'action_contacts')]")).click();,需要使用contains() function为了匹配部分文本。

关于java - 在 appium studio 上找到的元素不适用于 appium 独立服务器,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57719996/

相关文章:

java - 在 JSP 中,context.xml 似乎被破坏错误

java - 如何在java中使用谷歌地理编码?

android - 处理appium-android中的软键盘事件

android - Android 中的多设备支持

android - Appium AndroidDriver 的 DesiredCapabilities

ios - Appium Desktop 在启动 ios 模拟器后终止

特定索引的Java流过滤项目

java - 在低级数据存储 API 中处理一对多关系的最佳方法是什么?

java - Appium 不显示 webview 上下文,它只显示 native 应用程序上下文。如何获取 webview 上下文?

ios - UI 应用程序检查器(如 Appium 中的检查器)如何工作?