【问题标题】:fail to use xpath to find element in webdriver无法使用 xpath 在 webdriver 中查找元素
【发布时间】:2023-03-18 20:57:01
【问题描述】:

感谢任何帮助。

我想知道萤火虫副本 xpath 是否总是适用于 webdriver。

我有一个带有列表的页面,我可以获得完整的 xpath 来查找前两个元素,但对于第 3、第 4 个元素却不能这样做。

对于第三个它不起作用:

WebElement element3=driver.findElement(By.xpath("/html/body/div[6]/div[2]/div/div[3]/div/div[3]/div/div[4]/div/div[4]/div/div/div/div[1]/div[2]/div[1]/div/div[2]/div/div[2]/div[1]/div/div[2]/div[1]/table/tbody[2]/tr[3]/td[5]/div"));

错误:

org.openqa.selenium.NoSuchElementException:无法定位元素: {"方法":"xpath","选择器":"/html/body/div[6]/div[2]/div/div[3]/div/div[3]/div/div[4]/ div/div[4]/div/div/div/div[1]/div[2]/div[1]/div/div[2]/div/div[2]/div[1]/div/div [2]/div[1]/table/tbody[2]/tr[3]/td[5]/div"}

我的 HTML:

<tr class="GKWRNW-BEX GKWRNW-BLYD GKWRNW-BELB GKWRNW-BON"> 
<td class="GKWRNW-BKW GKWRNW-BIYD x-grid-cell-first explorerGridRow" style="" cellindex="0"> 
<td class="GKWRNW-BKW GKWRNW-BIYD undefined x-treegrid-column explorerGridRow" style="" cellindex="1"> 
<div class="GKWRNW-BMW GKWRNW-BJYD" style=""> 
<div id="x-auto-390" class="GKWRNW-BPLC"> 
<div class="GKWRNW-BMLC"> 
<img style="height: 18px; width: 0px;" src="data:image/gif;=="> 
<img class="GKWRNW-BOLC" style="width: 16px" src="data:image/gif;base64,R0l=="> <span class="GKWRNW-BILC"></span>

【问题讨论】:

  • 这里是它的 html sn-p:
  • 你应该把你的代码放在你的问题中,而不是在 cmets
  • 您是否在编写代码后修改了您的 DOM 元素?如果添加或删除任何 DOM 元素,那么x-path 很可能也会更改。

标签: java html xpath


【解决方案1】:

使用 x-path 查找元素并不是一种有效的方法。因为 DOM 元素的任何更改(例如 - 添加或删除新的 DOM 元素,如 div)都会导致 x-path 发生变化。

所以最好对每个 DOM 元素使用 id 并使用 By.id() -

WebElement element = driver.findElement(By.id("someId::button"));

【讨论】:

  • 1.我试图对代码提出质疑,但它以某种方式抱怨代码不完整,而我不想将所有代码都放入问题中。 2. 感谢以上回答,我知道 xpath 可能不是查找元素的最佳方式,但是对于这种特殊情况,我没有制作任何 DOM,更改,我给了它足够的时间来加载(因为找到了其他元素很好),任何人都可以想到用 xpath 方法查找元素还有什么问题吗?提前致谢。
  • 当我从萤火虫中检查 DOM 面板的 web 元素时,它显示 id="" ,似乎 id 对我来说是空的。 itemID = "" 也是如此。在我看来,唯一的方法是通过 xpath
猜你喜欢
相关资源
最近更新 更多
热门标签