【问题标题】:Atata: Unable to locate CheckBox elementsAtata:无法定位 CheckBox 元素
【发布时间】:2019-01-25 14:51:48
【问题描述】:

当我在 CheckBox 元素上使用 [VerifyExists] 时收到错误消息,但当我使用通过框架生成的 XPath 时,我可以找到该元素。

错误信息:

Message: OpenQA.Selenium.NoSuchElementException : Unable to locate element: By.XPath: .//*[normalize-space(@id) = 'active-checker']/descendant-or-self::input[@type='checkbox']

实施:

[VerifyExists]
[FindById("isCommentRequred-checker")]
public CheckBox<_> RequestsWorklogCommentCheckBox { get; private set; }

手动搜索元素:

【问题讨论】:

    标签: c# automated-tests ui-automation atata


    【解决方案1】:

    我猜这是因为实际的&lt;input type="checkbox"&gt; 在页面上是不可见的(或有opacity: 0)。默认情况下,大多数控件的 Atata 在控件元素搜索期间按可见性过滤元素,并且只留下可见元素。

    尝试设置Visibility = Visibility.Any:

    [FindById("isCommentRequred-checker", Visibility = Visibility.Any)]
    

    通常复选框和单选按钮是不可见的,而其他元素会呈现它并接收点击。只需检查 HTML,然后尝试使用 Atata 或纯 WebDriver 单击它。如果它抛出异常,您可能需要实现自定义控件以使其单击例如span.control-label 元素。

    这里是 Kendo UI CheckBox 的控制示例:https://github.com/atata-framework/atata-kendoui/blob/master/src/Atata.KendoUI/KendoCheckBox%601.cs

    【讨论】:

    • 比你,叶夫根尼! [VerifyExists] [FindById("active-checker", Visibility = Visibility.Any)] 为我工作。
    • 这也适用于我在使用 RadioButton 时遇到的问题,但最终我必须通过 XPath 到标签来获取它。
    猜你喜欢
    • 2012-01-11
    • 2020-12-24
    • 2022-01-06
    • 2021-06-21
    • 2021-07-30
    相关资源
    最近更新 更多