gpt4 book ai didi

xpath - 从 selenium 客户端中的所有匹配元素中收集特定属性?

转载 作者:行者123 更新时间:2023-12-03 17:07:06 25 4
gpt4 key购买 nike

我正在使用 selenium-client 来测试一个站点。我想获取与特定选择器匹配的所有标签,然后将 href 属性返回到数组中。谁能告诉我我该怎么做?例如,这将返回第一个匹配的 'a' 标记的 href:

browser.get_attribute "//a[contains(@id,'friendImageLink')]/@href"
=> "http://asite/some-path"

我可以执行上述操作并得到一个 href 字符串数组吗?感觉应该很容易,但我无法解决:/如果我在 Firebug 中这样做
$x("//a[contains(@id,'friendImageLink')]/@href")

我得到了一系列对象,所以感觉就像我很接近。

谢谢,最大

编辑 - 我想计算匹配的元素,然后遍历它们,但我似乎根本无法选择第 n 个元素。例如,有问题的页面有 38 个匹配“包含”条件的标签,但如果我这样做
browser.get_attribute "//a[contains(@id,'friendImageLink')][2]/@href"

我收到一条错误消息说
Selenium::CommandError: OR: 元素/descendant::a[contains(@id,'friendImageLink')][2]/未找到

编辑 - 我只是想出了一个办法。 @browser.get_all_links返回数组中页面上所有链接的所有 id。然后我可以 grep 出我想要的那些并遍历生成的过滤数组,获取每个链接,然后获取它的 href。例如
@browser.get_all_links.grep(/friendImageLink/).collect{|link_id| @browser.get_attribute("//a[@id='#{link_id}']/@href") }

最佳答案

这是常见问题解答。这:

//a[contains(@id,'friendImageLink')][2]

表示:任意 a成为第二个 a具有 id 属性的 child 包含 friendImageLink
//运算符的优先级高于谓词

你需要:
(//a[contains(@id,'friendImageLink')])[2]/@href

关于xpath - 从 selenium 客户端中的所有匹配元素中收集特定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3842441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com