尝试其他 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"
我用 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"