【问题标题】:Wait for element to be clickable by accessibility ID等待可访问性 ID 可点击的元素
【发布时间】:2018-07-27 11:24:56
【问题描述】:

我正在尝试等待元素可见,然后再尝试单击它。如果我不等待,我的测试会以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 类,它具有可访问性 ID 的 By 策略,但是当我尝试使用它实现等待时,我的测试立即失败并出现 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();`

【问题讨论】:

    标签: c# selenium appium


    【解决方案1】:

    我刚刚发现 C# 中有一个 MobileBy 类,它的 AccessibilityId 定位器可用作 By 类型,但它并没有真正达到我的预期

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2015-10-11
      • 2016-12-29
      • 2020-02-23
      • 2020-02-23
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多