尝试其他 xpath,否则继续

Try alternative xpaths, or else continue

我用 Selenium 拼凑了一个网络爬虫,它使用 XPath 来查找元素。在我抓取的网页上,有两种可能的布局被加载,具体取决于内容。

如果我 运行 我的代码布局错误,我会收到错误消息:Message: Unable to locate element: {"method":"xpath","selector":

如果第一个 xpath 不存在,我如何创建一个 try/except(或类似的)来尝试替代 xpath?或者,如果存在 none,请继续执行下一部分代码?

我没有使用 Python 的经验,所以我无法为您编写示例代码,但您应该创建两个 try/catch(或者在本例中为 try/except ) 阻止您尝试使用 find_element_by_xpath 查找元素的位置。之后捕获 NoSuchElementException 并且您可以使用 WebElement(s)。

在 JAVA 中看起来像这样:

  Boolean isFirstElementExist, isSecondElementExist = true;
  WebElement firstElement, secondElement;

  try {
    firstElement = driver.findElement(By.xpath("first xpath"));
  } catch (NoSuchElementException e) {
    isFirstElementExist = false;
  }

  try {
    secondElement = driver.findElement(By.xpath("second xpath"));
  } catch (NoSuchElementException e) {
    isSecondElementExist = false;
  }

  //... work with the WebElement

这是简单的解决方案:

try:
    element_in_layout_1 = driver.find_element_by_xpath("my_xpath_1")
except:
    try:
        element_in_layout_2 = driver.find_element_by_xpath("my_xpath_2")
    except:
        print "No Element was found"
        pass
    else:
        print "Element in Layout 2 was found"
else:
    print "Element in Layout 1 was found"