Rspec 查找没有特定类名的元素

Rspec 查找没有特定类名的元素,rspec,watir,watir-webdriver,class-names,Rspec,Watir,Watir Webdriver,Class Names,这和我以前问的这个问题是一样的-。我能够基于使用类名资产卡可选项添加特定数量的元素 目前,我希望单击更多元素,将它们添加到现有集合中。我的困境是: 未单击元素时,类名为:图像卡资产卡可选 单击某个元素时,selected将附加到类名:image-card-asset-card-selected-selected 在我的例子中,我试图寻找只显示图像卡资产卡可选且不包括选定的其他元素。我不知道如何明确定位它们 有没有一个正则表达式解决方案或其他方法来解决这个问题?找到没有特定类的元素的最简单方法

这和我以前问的这个问题是一样的-。我能够基于使用类名
资产卡可选项添加特定数量的元素

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

  • 未单击元素时,类名为:
    图像卡资产卡可选
  • 单击某个元素时,
    selected
    将附加到类名:
    image-card-asset-card-selected-selected
在我的例子中,我试图寻找只显示
图像卡资产卡可选
且不包括
选定
的其他元素。我不知道如何明确定位它们


有没有一个正则表达式解决方案或其他方法来解决这个问题?

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

browser.divs(css: 'div.image-card.asset-card.selectable:not(.selected)')
CSS选择器的说明:

  • div
    -这是您试图匹配的元素的标记名
  • .image card.asset card.selective
    -这是您希望匹配元素具有的类的列表
  • :未(.selected)
    -这是您不希望匹配元素具有的类的列表
如果您反对CSS选择器,您可以迭代元素。请注意,这将较慢,因为它必须对浏览器进行更多调用

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

我以前尝试过使用正则表达式(请参见),但是它变得非常混乱。我不建议你走那条路。

谢谢!这样做的伎俩,并随后解决了我的另一个问题,选择其他卡在屏幕上!