我在[VerifyExists]
元素上使用CheckBox
时收到错误消息,尽管我使用通过框架生成的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; }
手动搜索元素:
答案 0 :(得分:2)
我想这是因为实际的<input type="checkbox">
在页面上不可见(或具有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