我正在尝试找到一种方法来获取鼠标悬停事件上显示的工具提示的标题 在页面上: https://demo.nopcommerce.com/nike-floral-roshe-customized-running-shoes
当鼠标悬停在 2 个“打印”项目上时,会出现此工具提示。 这是关于此工具提示的标题:
//*[@id="image-squares-8"]/li[1]/div/div[1]
//*[@id="image-squares-8"]/li[2]/div/div[1]
自然
新鲜
如何在 selenium webdriver 中以编程方式获取它?
我有这样的代码:
mainPage = mainPage.moveToApparel()
.select()
.selectNthProductOnPage(1) -- moves to above page
.selectSize(8) -- select size of shoes
.selectColor("White/Black") -- select color on this page
.moveToStyle(1); -- action.moveToElement(element);
String text = mainPage.getStyleTooltip(); -- returns empty string!?
public String getStyleTooltip() {
// tooltip-header
return tooltipHeader.getText();
}
@FindBy(css = "div[class='tooltip-header']")
@CacheLookup
WebElement tooltipHeader;
在这段代码中
mainPage.getStyleTooltip();
返回空字符串,而不是当前的工具提示文本。 在这种情况下如何获取当前的工具提示文本?
BR,
佛特伦克
当您获取其文本时,您的工具提示将被隐藏。
getText()
函数仅返回可见元素的文本。
要从不可见元素获取文本,您可以获取元素
innerHTML
属性。
public String getStyleTooltip() {
return tooltipHeader.getAttribute("innerHTML");
}
如果您需要获取当前可见的工具提示,您应该先将其悬停,然后从列表中过滤元素并获取第一个可见的,就像
@FindBy(css = "div[class='tooltip-header']")
@CacheLookup
List<WebElement> tooltipHeaders;
public String getStyleTooltip() {
return Stream.of(tooltipHeaders)
.filter(el -> ((WebElement) el).isDisplayed())
.findFirst().map(el -> ((WebElement) el).getAttribute("innerHTML")).orElse("");
}