通过辅助功能ID

时间:2018-02-16 14:16:19

标签: c# selenium appium

在尝试单击它之前,我正在尝试等待元素可见。如果我不等,我的测试会失败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();`

1 个答案:

答案 0 :(得分:3)

我只是发现在C#中有一个MobileBy类,其AccessibleId定位器可用作By类型,但它并没有真正做到我期望的那样