gpt4 book ai didi

ruby - 使用 Watir 匹配和排除多个类

转载 作者:数据小太阳 更新时间:2023-10-29 08:00:05 26 4
gpt4 key购买 nike

我希望能够在排除某些类的同时匹配一个类。

我可以使用类似下面的方法来获取与指定类匹配的所有 li 元素,但我不确定如何同时筛选出类。

b = Watir::Browser.new
free_boxes = b.lis(:class, /cellGridGameStandard/)

我想将其更改为匹配 cellGridGameStandard 类的所有 li 元素,但排除所有同时包含 notEligible 类或 ownAlready 类。

最佳答案

这里有几个选项。

让我们假设 html 是这样的:

<ul>
<li class="cellGridGameStandard">
Element 1
</li>
<li class="cellGridGameStandard ownAlready">
Element 2
</li>
<li class="cellGridGameStandard notEligible">
Element 3
</li>
<li class="cellGridGameStandard">
Element 4
</li>
</ul>

第一个和第四个 li 元素符合指定条件。

一个选项是检查没有 ownAlreadynotEligible 类的列表:

matching = browser.lis(:class => 'cellGridGameStandard')
.find_all { |li|
['ownAlready', 'notEligible'].none? {
|class_name| li.class_name.split.include? class_name
}
}
p matching.collect(&:text)
#=> ["Element 1", "Element 4"]

另一个更容易编写但有时被认为更难阅读的选项是使用 css 定位器:

matching = browser.elements(:css => 'li.cellGridGameStandard:not(.ownAlready):not(.notEligible)')
p matching.collect(&:text)
#=> ["Element 1", "Element 4"]

关于ruby - 使用 Watir 匹配和排除多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com