这与我之前提出的这个问题一样 - 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
的其他元素。我不确定如何明确地找到它们。
是否有正则表达式解决方案或任何其他关于如何处理此问题的想法?
答案 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),但它变得非常混乱。我不建议那样走。