c# - 无法使用 ID、XPath 和 CSS 选择器定位元素
问题描述
我正在使用带有 C# 的 atata 框架。我正在尝试定位 web 元素以选择所有行,但 Id、CSS 路径或 XPath 都无法找到。
我用过 ID、XPath 和 CSS 选择器
[FindById("com.kronos.wfc.ngui.genies.selectall")]
public Button<_> SelectAllRows { get; private set; }
[FindByXPath("div[@id=com.kronos.wfc.ngui.genies.selectall]")]
public Button<_> SelectAllRows { get; private set; }
我的页面对象应该被定位。路径详情如下:
元素:
<div class="widget-button btn-group margin-mini shrinkable" title="Select All Rows"
id="com.kronos.wfc.ngui.genies.selectall" style="display: inline-block;">
<div class="top-bar"><span></span></div>
<button type="button" class="btn btn-rounded widget-button-icon" id="com.kronos.wfc.ngui.genies.selectall_btn">
<i class="icon-k-select-all"></i></button><div class="icon-label"><span>Select All Rows</span></div></div>
选择器:#com.kronos.wfc.ngui.genies.selectall
XPath: //*[@id="com.kronos.wfc.ngui.genies.selectall"]
解决方案
对于第一个
<div>
元素:<div class="widget-button btn-group margin-mini shrinkable" title="Select All Rows" id="com.kronos.wfc.ngui.genies.selectall" style="display: inline-block;">
因为它是一个
div
,而不是一个button
元素,所以使用一般的 puproseControl
类型:[FindById("com.kronos.wfc.ngui.genies.selectall")] public Control<_> SelectAllRows { get; private set; }
对于第二个
<button>
元素:<button type="button" class="btn btn-rounded widget-button-icon" id="com.kronos.wfc.ngui.genies.selectall_btn">
如果元素实际可见,则以下内容应找到该元素:
[FindById("com.kronos.wfc.ngui.genies.selectall_btn")] public Button<_> SelectAllRows { get; private set; }
如果元素不可见:
[FindById("com.kronos.wfc.ngui.genies.selectall_btn", Visibility = Visibility.Any)] public Button<_> SelectAllRows { get; private set; }
无论如何,找出哪个元素实际上是可见的并且应该与之交互。
推荐阅读
- ms-word - 无法自动编号 word doc 中的数字
- javascript - 如何在 Chrome 70 的 Javascript 控制台中禁用自动完成功能?
- c# - c#: string(json) 到 object(generic) 的转换添加了额外的大括号
- ios - 对成员 'collectionView' Swift 4 的模棱两可的引用
- python - Django Model ImageField upload_to 不会将函数作为参数
- python - 如何矢量化 for 循环?
- c# - 使用 MVVM 在 WPF DataGrid CellEditEnding 事件中取消后将光标保留在单元格中
- c++ - -fno-inline 和编译时间
- java - 如何在Java中的对象数组中保留一个对象
- cmake - cmake如何避免每次都构建lib