Java 无法按属性或文本跟踪元素
我在点击菜单中的一个元素时遇到问题,该元素是这样写的:Java 无法按属性或文本跟踪元素,java,testing,selenium-webdriver,webdriver,Java,Testing,Selenium Webdriver,Webdriver,我在点击菜单中的一个元素时遇到问题,该元素是这样写的: <div class="menu"> <ul class="tabs ctrlTabsProfile"> <li class="active" data-tab="tabDetail">User Details</li> <li data-tab="tabEmail">Email</li> <li data-tab="tabPass">Change pass
<div class="menu">
<ul class="tabs ctrlTabsProfile">
<li class="active" data-tab="tabDetail">User Details</li>
<li data-tab="tabEmail">Email</li>
<li data-tab="tabPass">Change password</li>
<li data-tab="tabAdress">Account Details</li>
</ul>
</div>
还尝试列出元素,但仅得到null
:
for(WebElement el : driver.findElements(By.cssSelector(".tabs.ctrlTabsProfile"))) {
try {
assertTrue(driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*Account Details[\\s\\S]*$"));
} catch (Error e) {
System.out.println("Not found: \"Account Details\".");
}
String s = el.getAttribute("data-tab");
System.out.println(s);
if(s.equals("tabAdress")) {
driver.findElement(By.xpath("li[data-tab='tabAdress']")).click();
}
}
解决方案?建议?错误?首先,您的xpath选择器不正确
driver.findElement(By.xpath("li[data-tab='tabAdress']")).click();
应该是:
driver.findElement(By.xpath("//li[@data-tab='tabAdress']")).click();
driver.findElement(By.cssSelector("li[data-tab='tabAdress']")).click();
编辑:
你的css选择器也不正确
driver.findElement(By.cssSelector("li[data-tab=tabAdress")).click();
应该是:
driver.findElement(By.xpath("//li[@data-tab='tabAdress']")).click();
driver.findElement(By.cssSelector("li[data-tab='tabAdress']")).click();
编辑#2:
以及:
仅当元素是链接时才有效,而在本例中不是链接。a正确,
driver.findElements(By.cssSelector(“.tabs.ctrlTabsProfile”)
将仅返回ul
元素。要访问所有
,您可以尝试:
driver.findElements(By.cssSelector("ul.tabs.ctrlTabsProfile li.active"))
这三个标签是否总是显示出来,或者你必须点击男人才能显示出来?同样,我也不确定你想用你的代码块实现什么,但是我可以通过浏览它和你粘贴的html来判断它不会工作。您正试图从.ctrlTabsProfile对象检索数据选项卡属性,但该对象没有该属性。您的findElements调用将只返回一个元素,因为您的选择器只是选择列表项的父项。您是对的,非常感谢,祝您愉快!是的,很好的观点,我可能找不到,谢谢你,祝你度过愉快的一天!