通过回退查找XPath的元素

时间:2013-11-20 17:35:54

标签: python xpath selenium

for products in self.br.find_elements_by_xpath("//*[@class='image']/a"):
    self.urls.append(products.get_attribute("href"))

此代码将查找该类的所有href链接。

我的问题是网页有不断变化的来源,有时可能是//*[@class='image']/a但有时候//*[@class='newPrice']/a。如果找不到第一个xpath选项,如何更改for循环以使用另一个表达式?

2 个答案:

答案 0 :(得分:4)

首先将输出存储在变量中:

links = self.br.find_elements_by_xpath("//*[@class='image']/a")
if not links:
    links = self.br.find_elements_by_xpath("//*[@class='newPrice']/a")
for products in links:
    self.urls.append(products.get_attribute("href"))

答案 1 :(得分:1)

不等同于后备,但您可以使用OR语法:

for products in self.br.find_elements_by_xpath(
        "//*[@class='image']/a | //*[@class='newPrice']/a"):
    self.urls.append(products.get_attribute("href"))