我在网页中的行中有许多链接,其类名相同。像这样:
我可以使用XPATH点击第一个链接,
"(//span[@class='odds black'])"
但是,我想浏览特定行并单击每个赔率(如果存在)。 有关如何实现这一目标的任何帮助?
注意:我找不到使用其他属性的元素,因为它会根据数据动态变化。
参考源代码图片:
答案 0 :(得分:1)
假设类名将始终为'赔率某种颜色',您可以使用xpath的contains()函数。像这样的Xpath:
"//span[contains(@class,'odds')]"
将返回包含在classname中的字符串'odds'的所有跨度。
答案 1 :(得分:1)
而不是以这种格式使用XPATH:
"(//span[@class='odds black'])"
你能以红色框上方显示的格式使用它吗?
/html/body/div[2]/div[3]/div[1]/div[1]/div[2]table/tbody[31]/tr[1]/td[5]/a/span[2]/span/span
(您可以通过选择firebug中的元素,右键单击它的代码并选择复制XPATH来轻松获得此格式。
我发现在很多情况下我可以为tr [1]或其他路径属性添加一个计数器,以便非常准确地向下移动行。我无法真正看到您的网站比较下面的xpath,但我想它会是这样的:
/html/body/div[2]/div[3]/div[1]/div[1]/div[2]table/tbody[31]/tr[1]/td[5]/a/span[2]/span/span
/html/body/div[2]/div[3]/div[1]/div[1]/div[2]table/tbody[31]/tr[2]/td[5]/a/span[2]/span/span
/html/body/div[2]/div[3]/div[1]/div[1]/div[2]table/tbody[31]/tr[3]/td[5]/a/span[2]/span/span
然后你可以添加一个像" i"
这样的计数器所以你将在循环中迭代计数器并将其设置为以下行:
"/html/body/div[2]/div[3]/div[1]/div[1]/div[2]table/tbody[31]/tr["+str(i)+"]/td[5]/a/span[2]/span/span"
答案 2 :(得分:0)
CSS选择器是类识别的,因此使用它会更有意义;
span.odds
Xpath将类视为一个简单的字符串,因此强制您使用" contains" CSS允许您单独处理类