我正在开发一个网络应用程序,我需要找到一个特定的元素,但我无法用我的 xpath 找到它。 这是我试图在其中查找元素的 html 代码
<table>
<tr>
<th class="details">
<label>Name</label>
</th>
<td class="data">
<div id="...">
<div id="..."></div>
<input id="..." type="text">
</div>
</td>
</tr>
..........
</table>
我成功找到了它,但是当我注意到 id 是自动生成的时,我陷入了困境。我试图解决这个问题,找到包含文本“名称”的标签,然后找到 sibling ,但什么也没有。这是我的 xpath:
//*[text()[contains(.,'Name')]]/../following-sibling::td
最佳答案
您应该尝试使用下面的xpath
:-
String xpath = "(.//label[text() = 'Name']/following::input)[1]";
或者
String xpath = ".//label[text() = 'Name']/../following-sibling::td//input";
或者
String xpath = "(.//input[preceding::label[text() = 'Name'])[1]";
或者
String xpath = ".//input[ancestor::td[preceding-sibling::th/label[text() = 'Name']]]";
您可以使用上述任何一个 xpath
来查找所需的输入元素,如下所示:-
browser.findElement(By.xpath(xpath));
关于Java selenium 使用 xpath 查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319847/