我找不到唯一元素来验证是否选择了该元素。需要帮忙。 see attached image表示可能的元素。
var attr = findElement(By.xpath("//theme-item[@class='list-group-item
xpath-themes-list-item active ng-star-inserted']")).getText()
log("!!")
if (attr.contains("Infor M3A Theme"))
{
Assert.assertTrue(findElement(By.xpath("//theme-item[@class='list-group-
item xpath-themes-list-item active ng-star-inserted']")).isSelected,
"Incorrect Theme selected")
log("Infor M3A Theme Selected")
findElement(By.xpath("//*
[text()='back']")).click
driver.findElement(By.xpath("//button[@aria-label='Close Global
Navigation' and contains(@data-title,'CLOSE')]")).click();
}
else
{
Assert.fail("Theme Validation failed")
}
如果我可以通过使用具有活动性的元素类来真正确保选择该元素,因为它是一个很好的标识符,那么它会更好
答案 0 :(得分:0)
您可以尝试使用以下xpath。
//theme-item[contains(@class,'list-item active')]//a
答案 1 :(得分:0)
如果您的文本恒定,则可以使用linktext而不是使用类标识符。
driver.findElement(By.linktext(" *** M3A Theme"));
或者您可以直接搜索这样的文本
driver.finElement(By.xpath("//a[@text='*** M3A Theme']"));
如果您的文本不是恒定的,则可以使用xpath来包含文本
driver.findElement(By.xpath("//*[text()[contains(.,'M3A Theme')]]"));
注意:
要获取课程:
driver.findElement(By.cssSelector("theme-item[class = 'list-group-item
xpath-themes-list-item active']"));
我相信您的班级名称是动态的,所有元素的名称均为list-group-item xpath-themes-list-item
,一旦单击任何选项,班级名称将更改为list-group-item xpath-themes-list-item active
。
因此,要验证是否选择了该选项,请首先使用linktext
单击。然后,使用我提供的上述定位器,并检查isDisplayed()
。通过这种方式,您可以验证是否选择了您的选项
答案 2 :(得分:0)
查找包含突出显示主题的父元素
List<WebElement> parent = driver.findElements(By.cssSelector(".list-group-item.
xpath-themes-list-item.active"));
查找子元素,即在父元素内标记“ a”
WebElement themeElement = parent.findElement(By.tagName('a'));
查找主题名称
themeElement.getText();
答案 3 :(得分:0)
contains()
函数来匹配活动的theme-item
。descendant
axe来找到其子元素a
将所有内容放在一起:
new WebDriverWait(driver, 10)
.until(ExpectedConditions
.elementToBeClickable(By.xpath("//theme-item[contains(@class,'active')]/descendant::a")))
.click();
今后,请避免将HTML DOM作为图像发布,如果您添加代码,则获得良好响应的机会会大得多。