5

我有一个小行李图标,当将鼠标悬停在图标上时,会显示一个工具提示文本。我想通过在 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()但我正在测试鼠标悬停功能,不应该是点击图标。这太奇怪了。

4

5 回答 5

2

由于工具提示是由div' 的title属性触发的,所以只检查该属性值怎么样?它将依赖于假设所有浏览器title在悬停时都显示为工具提示(据我所知,所有桌面浏览器都会这样做)。

简单地谷歌搜索一下,似乎这些方面的东西应该有效:

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

之后,您可以验证是否titleText符合预期。

于 2013-03-14T05:57:30.190 回答
1

使用 Java Robot 进行 UI 交互;机器人在这里用于控制鼠标动作。

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);
于 2014-01-24T08:04:00.400 回答
1

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

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) 作为“操作”的一部分执行。我尝试了几种不同的自定义等待方法,但我只能通过 2 秒或更长时间的显式睡眠来获得所需的可靠性。

我相信有更好的选择,但这对我有用!

于 2013-11-15T16:40:04.973 回答
0

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

此外,单击并按住对我来说表现出与移动到元素相同的行为。我认为这可能是硒的错误。

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

我正在使用chromedriver。

于 2013-04-04T17:18:45.893 回答
0

我使用机器人将鼠标悬停在图标上。不过,我必须校准机器人以使用 selenium,以便更轻松地点击元素。

有关使用硒校准机器人的信息,请参见此处的答案。

于 2013-05-08T22:30:45.050 回答