使用Watir访问订单列表中的列表项的元素

我试图点击订购商品列表中的链接。

这是HTML

该列表是观看次数最多的video的顺序。

我只是想选择第一个列表项,以便broswer将导航到href。

现在,我有

$website.element(:class => "gs-c-promo-heading nw-o-link gs-o-bullet__text gs-o-faux-block-link__overlay-link gel-pica-bold gs-u-pl@xs").click 

哪个类似于另一行代码我必须选择顶级故事,工作正常。 任何想法为什么这不起作用?

另外,我如何获取此有序列表中的所有项目并打印出每个链接文本?

我无法重现你的exception。 但是,除非有exception,否则答案是删除复合类名称 – 即类定位器中不能有任何空格。

大多数类似乎都是通用的,因此可能会被删除。 你可以尝试:

 $website.element(:class => "gs-c-promo-heading").click 

如果类真的很重要,你可以使用Watir的新的多类定位器。 这会构建一个大的XPath,它不会触发Selenium的复合类检查器。

 $website.element(:class => ["gs-c-promo-heading", "nw-o-link", "gs-o-bullet__text", "gs-o-faux-block-link__overlay-link", "gel-pica-bold", "gs-u-pl@xs"]).click 

要获取所有项目,我会根据其data-entityid属性找到li元素,这些属性看起来具有描述性:

 $website.lis(data_entityid: /most-popular-watched/).each do |li| puts li.link.text end 

这也可能是点击第一个链接的更具描述性的方式:

 $website.li(data_entityid: /most-popular-watched/).link.click