定位没有特定 class 名称的元素

Locating elements without a specific class name

这与我之前问过的这个问题一脉相承 - Watir webdriver; counting elements with changing class names。我能够根据使用 class 名称 asset-card selectable.

添加特定数量的元素

目前,我希望单击更多元素以将它们添加到现有集合中。这是我的困境:

就我而言,我试图寻找 表示 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),但它变得非常混乱。我不建议这样做。