请查看下面的脚本
<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块中继续执行以便执行继续)。这是处理这种情况的正确方法吗?
答案 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"));