这是我要测试的演示商店的代码:
<li class="level0 nav-2 parent">
<a href="http://demo-store.seleniumacademy.com/men.html"
class="level0 has-children">Men</a>
<ul class="level0">
<li class="level1 view-all">
<a class="level1" href="http://demo-
store.seleniumacademy.com/men.html">View All
Men</a>
</li>
<li class="level1 nav-2-1 first"><a></a></li>
<li class="level1 nav-2-2"><a href="http://demo-
store.seleniumacademy.com/men/shirts.html"
class="level1">text to get</a>
</li>
<li class="level1 nav-2-3"><a></a></li>
</ul>
</li>我希望获得这些子类别的文本,以便以后可以使用链接元素中的文本单击特定类别。我的代码是:
public Subcategory openSubcategory (String subcategoryName){
List<WebElement> subcategories = driver.findElements(By.cssSelector("a.level1"));
for (WebElement element: subcategories) {
if (element.getText().equals(subcategoryName)){
element.click();
break;
}
}
return new Subcategory(driver);
}但是它不会进入循环,可能是因为element.getText()是空的。
发布于 2022-02-15 22:04:43
要单击文本为恤的,首先必须将元素为Men WebDriverWait for visibilityOfElementLocated,您可以使用以下
public Subcategory openSubcategory (String subcategoryName){
WebElement menuMen = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(@class,'has-children') and text()='Men']")));
new Actions(driver).moveToElement(menuMen).build().perform();
List<WebElement> subcategories = driver.findElements(By.xpath("//a[contains(@class,'has-children') and text()='Men']//following::ul[1]//li/a"));
for (WebElement element: subcategories) {
if (element.getText().equals(subcategoryName)){
element.click();
break;
}
}
return new Subcategory(driver);
}发布于 2022-02-15 11:52:47
element.getText()可以是空的。
尝试:
element.getAttribute("value");
// or
element.getAttribute("innerHTML");将CSS更改为:
"a[class*='level']";
// or
"a[]";调试代码并检查元素是否为空。
https://stackoverflow.com/questions/71125803
复制相似问题