首页 > 解决方案 > Selenium 悬停功能在第二次调用时不起作用

问题描述

我需要将光标悬停在工具提示上,然后检查里面的文本是否有不同的产品。但是 hover() 函数在第二次调用时不会将光标移动到工具提示。我怎样才能让它在后续调用中也起作用?

我试过以下:

final StringJoiner tooltipIconClassStringJoiner = new StringJoiner(" ");
tooltipIconClassStringJoiner.add(format(MULTI_CART_ENTRY_ID_FORMAT, productCode));
tooltipIconClassStringJoiner.add(MAINTENANCE_SECTION);
tooltipIconClassStringJoiner.add(TOOLTIP_ICON);

final SelenideElement element = $(tooltipIconClassStringJoiner.toString());
element.shouldBe(visible);
element.hover();

final StringJoiner maintenanceTooltipStringJoiner = new StringJoiner(" ");    
maintenanceTooltipStringJoiner.add(format(MULTI_CART_ENTRY_ID_FORMAT, productCode));
maintenanceTooltipStringJoiner.add(format(MAINTENANCE_TOOLTIP, productCode));

$(maintenanceTooltipStringJoiner.toString()).shouldBe(visible);

我也尝试过采取行动:

new Actions(webDriverUtils.getDriver()).moveToElement(element).perform();

但是这两个选项仅适用于第一次调用 hover/moveToElement 函数。

标签: javaseleniumselenium-webdriver

解决方案


我对Java不熟悉。

但我认为您应该在第二次 hover() 之前再次获取元素。

使用 For 循环来包装下面的代码。

// get element that you want to hover first.
Actions(webDriverUtils.getDriver()).moveToElement(element).perform();

推荐阅读