我怎样才能得到一些特别的环节形成链接集(How can I get some particular

2019-10-29 15:37发布

我使用的Watir-的webdriver有如下所示的代码相同的几行:

...
    <p class="schedule-text">
    by 
    <a href="http://www.somesite.com">MarketingClub</a> 
    in 
    <a href="http://www.somesite2.com">Marketing</a>     
    </p>

我需要这样使用我已经添加下面的代码页的对象包括在p标签的第一个环节,包括在p标签的第二个环节:

links(:followees_category, :css => "#home-followees li.animate-in ul li[data-show-id] p.schedule-text a")

...

followees_category_elements.attribute("href")

最后一行会给我两个链接: http://www.somesite2.com , http://www.somesite2.com不幸的是,我不能在CSS表示:最后/:第一等

第二连杆可以通过改变的CSS可以得到:

#home-followees li.animate-in ul li[data-show-id] p.schedule-text a + a

但我怎么能得到的只是从这种块的第一环节? 当然,我可以得到两个链接,并与每2工作,但也许有一个替代的解决方案?

Answer 1:

您可以使用CSS nth-of-type伪类来获得基于其指数(或相对的位置)的元素。

例如, a:nth-of-type(1)可用于返回是它们的父的第一行的所有链接:

links(:followees_category, :css => "p.schedule-text a:nth-of-type(1)")

对于第二个链接,你可以做a:nth-of-type(2) 请注意,这是基于1的索引。

links(:followees_category, :css => "p.schedule-text a:nth-of-type(2)")

对于第一个链接,你也可以做a:first-of-type

links(:followees_category, :css => "p.schedule-text a:first-of-type")

如果第二个环节是总是最后一个环节,你也可以做a:last-of-type

links(:followees_category, :css => "p.schedule-text a:last-of-type")


Answer 2:

我不建议使用CSS选择喜欢这些,因为他们使你的测试难以阅读和更加脆弱。

但是,无论选择是在最后,我会用Ruby的可枚举的方法来得到这样的第二环节:

links.select.each_with_index {|_, i| i.odd? }


文章来源: How can I get some particular link form the links collection