定位没有特定 class 名称的元素
Locating elements without a specific class name
这与我之前问过的这个问题一脉相承 - Watir webdriver; counting elements with changing class names。我能够根据使用 class 名称 asset-card selectable
.
添加特定数量的元素
目前,我希望单击更多元素以将它们添加到现有集合中。这是我的困境:
- 当元素 未被 单击时,class 名称为:
image-card asset-card selectable
- 单击元素时,
selected
会附加到 class 名称:
image-card asset-card selectable selected
就我而言,我试图寻找 仅 表示 image-card asset-card selectable
且不包含 selected
的其他元素。我不确定如何明确定位它们。
是否有正则表达式解决方案或关于如何处理此问题的任何其他想法?
查找没有特定 class 的元素的最简单方法是使用 :css
定位器。
browser.divs(css: 'div.image-card.asset-card.selectable:not(.selected)')
CSS-选择器的解释:
div
- 这是您要匹配的元素的标签名称
.image-card.asset-card.selectable
- 这是您希望匹配元素具有的 classes 的列表
:not(.selected)
- 这是 class 你不希望匹配元素具有 的列表
如果您反对 CSS-选择器,您可以遍历元素。请注意,这会比较慢,因为它必须对浏览器进行更多调用。
selectable = browser.divs(class: 'image-card asset-card selectable')
unselected = selectable.reject { |e| e.class_name.split(' ').include?('selected') }
我以前尝试过使用正则表达式(参见 my blog post),但它变得非常混乱。我不建议这样做。
这与我之前问过的这个问题一脉相承 - Watir webdriver; counting elements with changing class names。我能够根据使用 class 名称 asset-card selectable
.
目前,我希望单击更多元素以将它们添加到现有集合中。这是我的困境:
- 当元素 未被 单击时,class 名称为:
image-card asset-card selectable
- 单击元素时,
selected
会附加到 class 名称:
image-card asset-card selectable selected
就我而言,我试图寻找 仅 表示 image-card asset-card selectable
且不包含 selected
的其他元素。我不确定如何明确定位它们。
是否有正则表达式解决方案或关于如何处理此问题的任何其他想法?
查找没有特定 class 的元素的最简单方法是使用 :css
定位器。
browser.divs(css: 'div.image-card.asset-card.selectable:not(.selected)')
CSS-选择器的解释:
div
- 这是您要匹配的元素的标签名称.image-card.asset-card.selectable
- 这是您希望匹配元素具有的 classes 的列表:not(.selected)
- 这是 class 你不希望匹配元素具有 的列表
如果您反对 CSS-选择器,您可以遍历元素。请注意,这会比较慢,因为它必须对浏览器进行更多调用。
selectable = browser.divs(class: 'image-card asset-card selectable')
unselected = selectable.reject { |e| e.class_name.split(' ').include?('selected') }
我以前尝试过使用正则表达式(参见 my blog post),但它变得非常混乱。我不建议这样做。