如何使用Selenium webdriver使用MouseOver测试工具提示文本

本文关键字:测试 工具提示 文本 MouseOver 使用 何使用 Selenium webdriver | 更新日期: 2023-09-27 18:03:44

我有一个小行李图标,当鼠标悬停在图标上时,一个工具提示文本显示。我想通过在Visual Studio中编写c#代码来测试这一点。

行李图标在html:

中的显示
<div class="icon_png information icon_baggageyes" title="1 piece included in this fare."></div>
下面是我测试工具提示的代码:
Actions a = new Actions(driver);
IWebElement tooTipObject = driver.FindElement(By.XPath("//div[@class='icon_png information icon_baggageyes']"));
a.MoveToElement(tooTipObject).Click().Build().Perform();

问题是当我一步一步地调试上面的代码时,工具提示文本将显示出来。但是当我运行测试时,工具提示文本现在显示出来了。

通过网上搜索,有人说原因是鼠标没有长时间停留在行李图标上,没有足够的时间显示工具提示文本。

但是如何解决这个问题呢?我一直在寻找解决办法,但没有找到一个适合我的。

另一个问题是我的代码:a.MoveToElement(tooTipObject).Click().Build().Perform();工具提示文本只会显示,如果我把.Click()在这段代码。但是我在测试鼠标悬停的功能,不应该点击图标。这太奇怪了

如何使用Selenium webdriver使用MouseOver测试工具提示文本

既然工具提示是由divtitle属性触发的,那么仅仅检查该属性值如何?这将依赖于所有浏览器在悬停时将title显示为工具提示的假设(据我所知,所有桌面浏览器都这样做)。

简单地搜索一下,看起来应该是这样的:

WebElement element = driver.FindElement(
     By.XPath("//div[@class='icon_png information icon_baggageyes']"));
string titleText = element.getAttribute("title");

之后,您可以验证titleText是否如预期的那样。

我可能有点晚了,但我发现工作是:

IWebElement elementToHover = graphRegion.FindElement(By.CssSelector(CSSSelector));
Actions hover = new Actions(driver);
hover.MoveToElement(elementToHover);
Thread.Sleep(2000);
hover.Perform();

我主要在Chrome上测试了许多操作系统组合,在浏览器最大化的情况下,没有睡眠,我遇到了工具提示显示时间的问题,主要是在Linux上(Mac上的可靠性很差)。

我有点不确定为什么Thread.Sleep(2000)作为"Actions"的一部分执行。我尝试了一些不同的自定义等待方法,但我只通过显式的2秒或更长时间的Sleep实现了我需要的可靠性。

我相信有更好的选择,但这是为我工作!

使用Java Robot进行UI交互;Robot在这里是用来控制鼠标动作的。

WebElement targetElement = driver.findElement(By.id("value"));
Point coordinates = targetElement.getLocation();
Robot robot = new Robot(); 
robot.mouseMove(coordinates.getX(), coordinates.getY() + 65); //Number 65 should vary
Thread.sleep(3000);
String tooltip = driver.findElement(By.id("value"")).getAttribute("title");
System.out.println(tooltip);

我也有同样的问题。如果你说的是正确的OP,你没有在元素上停留足够长的时间,那么我很困惑为什么这个方法被称为"移动到元素"而不是"移动到元素然后立即离开元素"

同样,点击并按住对我来说显示了与移动到元素相同的行为。我认为这可能是一个bug与硒。

这是令人失望的。我想我只需要使用click,但是点击元素会触发另一组我不想触发的动作,而悬停则会帮助我显示工具提示。

我使用机器人将鼠标悬停在图标上。我必须校准机器人与硒的工作,使点击元素更容易。

关于用硒校准机器人的信息,请参阅这里的答案。