找到没有特定类名

时间:2016-08-23 13:31:29

标签: rspec watir watir-webdriver class-names

这与我之前提出的这个问题一样 - Watir webdriver; counting elements with changing class names。我能够基于使用类名asset-card selectable添加特定数量的元素。

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

  • 如果未单击,则类名称为:
    image-card asset-card selectable
  • 点击元素后,selected会附加到班级名称上:
    image-card asset-card selectable selected

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

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

1 个答案:

答案 0 :(得分: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') }

我之前尝试使用正则表达式(请参阅my blog post),但它变得非常混乱。我不建议那样走。