【发布时间】:2022-02-16 06:04:43
【问题描述】:
这是我要测试的demo store的代码:
<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() 是空的。
【问题讨论】:
-
也许你错过了一些延迟/在这里等待?
-
我尝试添加等待,但隐式等待被划掉。也许我在错误的地方等待。应该在哪里?
-
@StefanItic 我的意思是延迟,而不是隐式等待。将它放在收集元素的行之前。 IE。之前
List<WebElement> subcategories = driver.findElements(By.cssSelector("a.level1")); -
@Prophet 抱歉,我是这里的新手,所以我不知道如何添加延迟。我只知道隐式和显式等待......你能给我我应该在里面实现的代码吗?
标签: java selenium selenium-webdriver webdriverwait mousehover