在尝试单击它之前,我正在尝试等待元素可见。如果我不等,我的测试会失败NoSuchElementException
。现在我正在等待文本,但我希望能够等待accessibilityId
。我注意到accessibilityId
中的By
不是一个选项。我该如何处理?
_driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"),capability);
var wait = new WebDriverWait(_driver,new TimeSpan(0,0,0,15));
wait.Until(ExpectedConditions.ElementIsVisible(
By.XPath("//android.widget.TextView[@text='Bypass Sign In (Testing Only)']")));
_driver.FindElementByXPath("//android.widget.TextView[@text='Bypass Sign In (Testing Only)']").Click();;
更新:我注意到有一个MobileBy类,其中包含一个Byibility for Accessibility Id但是当我尝试使用它实现等待时,我的测试会立即失败并出现NoSuchElementException。一旦我使用xpath等待足够长的时间,然后点击_driver.FindByAccessibilityId,它似乎识别出该按钮并单击它。
以下代码失败。
'var wait = new WebDriverWait(_driver,new TimeSpan(0,0,0,45));
wait.Until(ExpectedConditions.ElementIsVisible(MobileBy.AccessibilityId("Button_SignIn")));
_driver.FindElementByAccessibilityId("Button_SignIn").Click();'
工作代码
`var wait = new WebDriverWait(_driver, new TimeSpan(0, 0, 0, 45));
wait.Until(ExpectedConditions.ElementIsVisible(
By.XPath("//android.widget.TextView[@text='Bypass Sign In (Testing Only)']")));
_driver.FindElementByAccessibilityId("Button_SignIn").Click();`
答案 0 :(得分:3)
我只是发现在C#中有一个MobileBy类,其AccessibleId定位器可用作By类型,但它并没有真正做到我期望的那样