Java 具有相同类名的容器的Xpath

Java 具有相同类名的容器的Xpath,java,selenium,xpath,selenium-webdriver,Java,Selenium,Xpath,Selenium Webdriver,我正在为一个java应用程序编写一个selenium测试,该应用程序在每次登录会话后都会创建一个新的id,所以我找不到使用id的元素 如何在xpath中找到第二个或第三个类,该类在不使用ID的情况下具有相同的名称 <div class="aui_FieldLayout_InputContainer"> <textarea id="gwt-uid-1601" class="aui-TextAreaInput printable" rows="4"></textarea

我正在为一个java应用程序编写一个selenium测试,该应用程序在每次登录会话后都会创建一个新的id,所以我找不到使用id的元素

如何在xpath中找到第二个或第三个类,该类在不使用ID的情况下具有相同的名称

<div class="aui_FieldLayout_InputContainer">
<textarea id="gwt-uid-1601" class="aui-TextAreaInput printable" rows="4"></textarea>
</div>

<div class="aui_FieldLayout_InputContainer">
<textarea id="gwt-uid-1602" class="aui-TextAreaInput printable" rows="4"></textarea>
</div>

<div class="aui_FieldLayout_InputContainer">
<textarea id="gwt-uid-1603" class="aui-TextAreaInput printable" rows="4"></textarea>
</div>

有多种方法可以做到这一点。一个选项是通过xpath查找元素,并检查
id
属性是否以
gwt uid-
开头:

driver.findElements(By.xpath('//textarea[starts-with(@id, "gwt-uid-")]'))
另一种选择是依赖
textarea
的容器:

driver.findElements(By.xpath('//div[@class="aui_FieldLayout_InputContainer"]/textarea'))
当然还有其他方法可以做到这一点,哪一种更可靠和更受欢迎取决于页面结构、属性名称和值的唯一性等

希望有帮助