使用ByAndroidUIAutomator定位器时,显式等待不适用于AppiumWebElement

时间:2019-06-04 14:08:19

标签: c# selenium-webdriver appium appium-android

我正在使用C#客户端来测试android应用。 Appium版本:1.13

我遇到了一种情况,当时我正在使用下面的代码来显式地等待某个元素显示,但该元素不起作用。

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(d => driver.FindElement(new ByAndroidUIAutomator("text(\"Test\")")).Displayed);

而我将定位器从ByAndroidUIAutomator更改为By.Xpath时,Appium驱动程序等待了10秒钟。

new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(d => driver.FindElement(By.XPath("//*[@text='Test']")).Displayed);

令我惊讶的是,当我使用隐式等待时,ByAndroidUIAutomator等待了5秒。

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));

现在我很想知道为什么它可以用于隐式等待而不是显式等待。

我使用显式等待时的错误消息如下:

消息:System.Reflection.TargetInvocationException:调用的目标引发了异常。   ----> OpenQA.Selenium.NoSuchElementException:使用给定的搜索参数无法在页面上找到元素。

1 个答案:

答案 0 :(得分:0)

我认为您对ByAndroidUIAutomator的使用不正确。我的期望是您应该对其进行修改,以实例化相应的UISelector,例如:

new ByAndroidUIAutomator("new UISelector().text(\"Test\")");

参考文献: