gpt4 book ai didi

Capybara:如何通过使用类内的多个属性来查找类

转载 作者:行者123 更新时间:2023-12-05 05:22:21 26 4
gpt4 key购买 nike

我想找到包含特定文本(在本例中为名称)和其中启用的按钮的第一类。

我的资源是这样的

 <div class="some parent class"> 
<div class="class" id="1">
<div class="some other name">......</div>
<div class="button enabled">......</div>
</div>
<div class="class" id="2">
<div class="name">......</div>
<div class="button disabled">......</div>
</div>
<div class="class" id="3">
<div class="name">......</div>
<div class="button enabled">......</div>
</div>

</div>

我试过了

first('.class',text: 'name')

当然,它会找到具有名称但禁用按钮的头等舱。那我试过了

first('.class',text: 'name', text: 'button text')

但它看起来像是在文本参数之间应用 OR 运算符并找到 id 为 1 的类。有没有办法在文本参数之间应用 AND 运算符或任何其他方法来查找其中具有特定文本和按钮的类。还要提一下,这些类的位置可以是随机的,所以不能简单地说找到最后一个类。

最佳答案

您可以找到所有 具有指定文本的div 标签。然后遍历这些以找到第一个也包含已启用按钮的按钮:

all('.class', text: 'name').find { |div| div.has_css?('div.button.enabled') }

使用单个 XPath 表达式可能会获得更好的性能。然而,它相当笨重,可能不值得付出努力:

first(
:xpath,
'//div
[contains(concat(" ", @class, " "), " class ")]
[.//text()[contains(., "name")]]
[.//div
[contains(concat(" ", @class, " "), " button ")]
[contains(concat(" ", @class, " "), " enabled ")]]'
)

关于Capybara:如何通过使用类内的多个属性来查找类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627743/

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