Python 尝试其他XPath,或者继续

Python 尝试其他XPath,或者继续,python,selenium,xpath,try-except,Python,Selenium,Xpath,Try Except,我用Selenium拼凑了一个web爬虫,它使用XPath查找元素。在我正在抓取的网页上,根据内容的不同,可能会加载两种布局 如果在错误的布局上运行代码,则会出现错误:消息:无法定位元素:{“方法”:“xpath”,“选择器”: 如果第一个xpath不存在,我如何创建一个try/(或类似)来尝试另一个xpath,或者如果第一个xpath不存在,或者如果没有,继续下一段代码?我没有Python的经验,所以我无法为您编写示例代码,但您应该创建两个try/catch(或者在本例中为try/except

我用Selenium拼凑了一个web爬虫,它使用XPath查找元素。在我正在抓取的网页上,根据内容的不同,可能会加载两种布局

如果在错误的布局上运行代码,则会出现错误:
消息:无法定位元素:{“方法”:“xpath”,“选择器”:


如果第一个xpath不存在,我如何创建一个
try
/
(或类似)来尝试另一个xpath,或者如果第一个xpath不存在,或者如果没有,继续下一段代码?

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

在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"

那么,这是Python的核心问题吗?如何编写异常处理代码?您正在寻找一个NoTouchElementException(says)