以下是我的html源代码的样子。
<tr>
<td class='first'>User Name</td>
<td class='last'>
<input/>
</td>
</tr>
现在,当我试图找到输入标签时,我错误地写了我的代码,如
driver.findElement(By.xpath("//tr/td[@class='last']")).findElement(By.cssSelector("td.last>input"))
它成功找到了输入标签,这对我来说似乎有点混乱,因为在我的第一个findElement中我已经到达td标签现在再次在第二个findElement中我从相同的td标签开始。我认为它应该抛出NoSuchElement异常。 我再次使用By方法的不同组合尝试了它,但它无法找到并触发NoSuchElement异常。即使我尝试过如下所示,也解决了NoSuchElement异常:
driver.findElement(By.xpath("//tr/td[@class='last']")).findElement(By.cssSelector("td.last"))
任何人都可以帮助我解决这种异常行为的原因,第一种情况是成功找到输入元素。
答案 0 :(得分:1)
您的代码基本上是正确的。而且,这确实是一种正常行为。
driver.findElement(By.xpath("//tr/td[@class='last']")).findElement(By.cssSelector("td.last>input"))
第一个“findElement”部分找到 td类,其类为“last”。现在,第二个“findElement”必须找到位于元素下的元素,该元素位于第一个“findElement”部分。而且,这正是它的作用。 cssselector指向 td类下的“input”标记,类为“last”。你在哪里开始它并不重要。事实上,重要的是找到的元素只有“输入”。
希望这会有所帮助。!!