這是我要測驗的演示商店的代碼:
<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()它是空的。
uj5u.com熱心網友回復:
要首先單擊帶有文本為Shirts的WebElement ,您必須將帶有文本的元素滑鼠懸停在Men誘導WebDriverWait以獲取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);
}
uj5u.com熱心網友回復:
element.getText() 可以為空。
嘗試:
element.getAttribute("value");
// or
element.getAttribute("innerHTML");
將您的 CSS 更改為:
"a[class*='level']";
// or
"a[]";
除錯代碼并檢查元素是否不為空
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424659.html
