我在页面中有许多链接,如下所示:
<a class="plant_detail_link" href="plants/O7-01111"><h3>O7-01111</h3></a>
我可以使用以下xpath在我的页面中选择所有这些链接:
//a[@class='plant_detail_link']
我可以通常的方式提取每个链接类的属性:
//a[@class='plant_detail_link']/@class
但是当我尝试使用相同的技术来提取href属性值时,我得到一个空列表:
//a[@class='plant_detail_link']/@href
有没有人有任何想法为什么会出现这种情况?
image detailing chrome developer console xpath execution
编辑:
在此处查看完整页面html - http://pastebin.com/MAjTt86V
答案 0 :(得分:0)
例如,我在此页面的控制台中为“问题”按钮运行了这些$ x查询,并得到以下输出:
$x("//a[@id='nav-questions']/@href")
> []
$x("//a[@id='nav-questions']/@href")[0].value
> "/questions"
您可以使用类似的东西来获取可用的值数组:
var links = $x("//a[@target='_blank']/@href");
var linkArr = [];
for (i in links) { linkArr.push(links[i].value)}
或将其放入函数中:
function getHref(selector, value, $x) {
var links = $x("//a[@"+selector+"='"+value+"']/@href");
var linkArr = [];
for (i in links) { linkArr.push(links[i].value)};
return linkArr; }
getHref("target","_blank", $x);
修改强> 不确定这是否会对你有帮助,但在Chrome中添加这样的逗号会返回没有[index] .value的输出:
$x,("//a[@id='nav-questions']/@href")
> "//a[@id='nav-questions']/@href"
您可以尝试在xpath选择器中添加逗号,但我不确定它是否会对您的情况有所帮助。