页面上有几个元素,我需要它们的数组,但没有带特定文本的元素。我现在做的是
tabs_quantity = page.all(:css, 'div.class1 ul.tabs li.tab.exist', visible: true)
tabs_quantity.each { |x|
if x.text != 'Main'
...blah-blah-blah...
我只看到“:text =>'文字'到处都是,但我需要的是与平等相反,所以我已经搜索并测试了但是没有发现是否有像
这样简单的东西tabs_quantity = page.all(:css, 'div.class1 ul.tabs li.tab.exist', visible: true, :text !=> //or "not equal", whatever// 'Main')
感谢。
答案 0 :(得分:1)
我同意Raza。绝对尝试在您正在寻找的元素上设置一个类。
如果由于某种原因事实证明这是不可能的,那么还有更多的选择。
1)你可以试试正则表达式:
# match text that doesn't contain 'Main'
page.all('li.tab.exist', text: /^(?:(?!Main).)*$/)
这不容易阅读。但是既然你已经把你的课程缩小了很多,那可能不会太慢。
2)另一种选择是xpath:
# find li with class of 'exist' and any text except 'Main'
page.all(:xpath, "//li[contains(@class, 'exist') and not(contains(.,'Main'))]" )
这也有点不合适,特别是如果你想要像你原来的css匹配器一样深入。我肯定会随附一条评论。
更多信息:使用css类肯定更快更容易。尽可能避免文本匹配。
答案 1 :(得分:0)
只需将一个类添加到要选择的元素组中,然后使用以下内容添加:
page.find('.class_name')