当前位置: 首页 > 知识库问答 >
问题:

无法在运行时使用Appium标识元素

姚树
2023-03-14
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());         
cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Google Pixel 2");
cap.setCapability(MobileCapabilityType.BROWSER_NAME,"");
cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.0");
cap.setCapability("automationName", "UiAutomator2");    
cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.kruxanalytics.kruxmetrix");
cap.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "com.kruxanalytics.kruxmetrix.MainActivity");

I have tried the following find element methods:

driver.findElementByAccessibilityId("LOGIN").click();
driver.findElement(By.xpath("//android.widget.Button[@content-desc='LOGIN']")).click();

Appium log mostly contains this:
[WD Proxy] Got an unexpected response: {"sessionId":"5f7bca9b-2e8b-46a7-9727-53a85e0d6df0","status":7,"value":"An element could not be located on the page using the given search parameters."}
[debug] [MJSONWP] Matched JSONWP error code 7 to NoSuchElementError

共有1个答案

祁承望
2023-03-14

我怀疑您的应用程序是否能够立即加载,很可能您需要引入WebDriverWait,以便在特定的时间跨度内查询应用程序中的指定元素。

所以更改这一行:

driver.findElementByAccessibilityId("LOGIN").click();

对此:

new WebDriverWait(driver,30)
        .until(ExpectedConditions
                .elementToBeClickable(By.xpath("//android.widget.Button[@content-desc='LOGIN ']")))
        .click();
 类似资料:
  • 我使用的是Appium 1.6.5设备:iPod iOS版本:10.3.3 我无法使用Appium inspector识别元素。我点击任何对象,整个框架被选中。我无法唯一地识别每个元素。请参考下图了解问题的实际表示。 请帮我解决这个问题

  • 我正在android的clock应用程序上尝试一段appium自动化代码,但我的代码倾向于跳过滚动逻辑。我还尝试了findelement()和gettext()来标识该元素,但仍然没有成功。代码如下:

  • 我正在尝试使用UISelector找到一个位于可见屏幕空间(又名viewport)之外的TextView小部件: 当我尝试与这样的元素交互时,结果是以下消息: 逻辑结论将是元素不存在或者我的定位器策略是错误的。但问题是,当我更改文本以查找可视空间/视口内的元素时,定位器工作得完美无缺。示例: 这是UiSelector和textContains()的工作方式吗?这是另一种解决方案吗? 多谢。

  • 无论何时运行docker构建,我都会得到: “msbuild”不被识别为内部或外部命令,可操作程序或批处理文件。并且“nuget.exe”不被识别为内部或外部命令,可操作程序或批处理文件。 但是,当我从CMD运行msbuild或nuget恢复时,它自己可以正常工作。我已经添加了系统变量/路径的路径

  • 我无法使用Appium inspector识别元素。当我点击任何对象时,整个框架被选中。我无法唯一地识别每个元素。 我使用的是Appium 1.17.1-1设备:iPhone 6S iOS版本:12.2

  • 我无法使用XPath标识元素。我尝试了不同类型的xpath,但无法识别它。 我想标识下面的图片中显示的元素“Bills”。我没有ID,所以我使用XPath。我使用了下面的XPath。 xpath=//android.app.actionbar$tab/textview[@text='bills']和xpath=//android.app.actionbar$tab1/textview[@text=