如何使用类名来获取带有Selenium WebDriver(Java)的<li>
中的文本,而不是使用xpath或css定位器。
<body><table width="599" align="center" border="0" cellSpacing="0"
cellPadding="0"><tbody>
<tr>
<td width="599" class="error">
<font color="#ff0000">
<span class="errorHdr">The following errors occurred:</span>
<p></p><ul><ul><li>Invalid or incorrect user name entered.</li>
<li>Incorrect password entered. Passwords are case-sensitive. Please try again.</li>
</ul></ul>
</font>
</td>
</tr>
</tbody></table></body></html>
答案 0 :(得分:1)
不,你不能使用类名获取li文本。使用xpath或cssSelector有什么问题?这些是为你的情况而制作的。无论如何只是为了迎合你的想法,还有另一种方法,使用标记名,如下所述:
List<WebElement> allLi = driver.findElements(By.tagName("li"));
for(WebElement eachLi:allLi){
String tmp = eachLi.getText();
System.out.println("Text in li: "+tmp); //You may match for your required text, before printing/using it.
}
答案 1 :(得分:0)
没有使用XPath或CSS选择器就无法获取li文本。另外你为什么不愿意使用呢?我个人更喜欢CSS而不是XPath。以下是我将如何做到这一点。基本上,我使用li
td
下的所有classname error
元素
List<WebElement> lis = driver.findElements(By.cssSelector("td.error li"));
for(WebElement li:lis){
System.out.println(li.getText());
}