首页 > 解决方案 > Ruby Capybara Element not found 错误处理

问题描述

internet.find(:xpath, '/html/body/div[1]/div[10]/div[2]/div[2]/div[1]/div[1]/div[1]/div[ 5]/div/div[2]/a').text

我正在循环浏览一系列页面,有时这个 xpath 将不可用。如何继续下一个 url 而不是抛出错误并停止程序?谢谢。

标签: rubycapybara

解决方案


首先,停止使用这样的 xpath——它们将变得非常脆弱且难以阅读。在没有看到 HTML 的情况下,我无法为您提供更好的 HTML - 但至少在某种程度上必须有一个id您可以定位的元素。

接下来,您可以捕获返回的异常find并忽略它,或者更好的是,您可以先检查页面是否具有该元素

if internet.has_xpath?(...)
  internet.find(:xpath, ...).text
   ...
else
   ... whatever you want to do when it's not on the page
end

推荐阅读