我正在使用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:使用给定的搜索参数无法在页面上找到元素。
答案 0 :(得分:0)
我认为您对ByAndroidUIAutomator
的使用不正确。我的期望是您应该对其进行修改,以实例化相应的UISelector,例如:
new ByAndroidUIAutomator("new UISelector().text(\"Test\")");
参考文献: