缺乏信息会引发异常

时间:2016-11-28 13:48:05

标签: selenium-webdriver

请查看下面的脚本

<ul id="ul_list">
  <li>
     <a>Text1</a>
   </li>
   <li>
     <span>Text2</span>
   </li>
   <li>
     <span>Text3</span>
   </li>
</ul>

我能找到ul标签和Li标签。

WebElement ul_tag = wdriver.findElement(By.id("ul_list"));
List<WebElement li_tag = ul_tag.findElements(By.tagName("li"));

但问题是当我迭代&#34; li_tag&#34;我试图找到span标记,并在第一次尝试时抛出异常(NoSuchElementFoundException)。我想要做的是避免这种情况。暂时我使用try和catch块处理它(在catch块中继续执行以便执行继续)。这是处理这种情况的正确方法吗?

2 个答案:

答案 0 :(得分:1)

要忽略没有任何跨度的“li”,请重写代码的第二行,如下所示:

SELECT COUNT(*) as num_rows FROM PriceRequests

它找到在其子节点中具有“span”的所有“li”。然后你可以遍历列表。

答案 1 :(得分:0)

  

我正在尝试查找span标记,并在第一次尝试时抛出异常(NoSuchElementFoundException)

正如您所说,您正在寻找<span>内的<li>元素,但它会在首次尝试时抛出异常,这绝对是正确的,因为在第一个<li>元素内部&#39 ; s显然看起来没有<span>元素存在。

如果您只想在<span>中找到<li>元素,可以尝试在一个线性解决方案中使用cssSelector代替以下内容: -

List<WebElement> span_tag = ul_tag.findElements(By.cssSelector("ul#ul_list > li > span"));