1

这与我之前提出的这个问题相同——Watir webdriver;计算类名变化的元素。我能够根据使用类名添加特定数量的元素asset-card selectable

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

  • 当一个元素没有被点击时,类名是:
    image-card asset-card selectable
  • 单击元素时,selected将附加到类名:
    image-card asset-card selectable selected

就我而言,我正在尝试寻找image-card asset-card selectable包含但不包含的其他元素selected。我不确定如何明确定位它们。

是否有正则表达式解决方案或有关如何解决此问题的任何其他想法?

4

1 回答 1

2

查找没有特定类的元素的最简单方法是使用:css定位器。

browser.divs(css: 'div.image-card.asset-card.selectable:not(.selected)')

CSS选择器的解释:

  • div- 这是您尝试匹配的元素的标签名称
  • .image-card.asset-card.selectable- 这是您希望匹配元素具有的类列表
  • :not(.selected)- 这是您希望匹配元素拥有的类列表

如果你反对 CSS 选择器,你可以遍历元素。请注意,这会更慢,因为它必须对浏览器进行更多调用。

selectable = browser.divs(class: 'image-card asset-card selectable')
unselected = selectable.reject { |e| e.class_name.split(' ').include?('selected') }

我之前尝试过使用正则表达式(请参阅我的博客文章),但是它变得非常混乱。我不建议那样做。

于 2016-08-23T13:55:22.477 回答