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

Accessing elements of list items within an order list using Watir

我正在尝试单击已订购商品列表中的 link。

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

我只是想 select 第一个列表项,以便浏览器导航到 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

这类似于我必须 select 头条新闻的另一行代码,工作正常。知道为什么这不起作用吗?

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

我无法重现您的异常。但是,如果有例外,答案是删除复合名称 class - 即您不能在 class 定位器中包含任何空格。

大多数 classes 看起来很通用,因此可能会被删除。你可以试试:

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

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

$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

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

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