使用Watir访问订单列表中的列表项的元素
我试图点击订购商品列表中的链接。
该列表是观看次数最多的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