首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Selenium webdriver使用MouseOver测试工具提示文本

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

Stack Overflow用户
提问于 2013-03-14 13:35:31
回答 5查看 19.6K关注 0票数 4

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

以下是行李箱图标在html中的显示方式:

代码语言:javascript
复制
<div class="icon_png information icon_baggageyes" title="1 piece included in this fare."></div>

下面是我测试工具提示的代码:

代码语言:javascript
复制
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()放入此代码中时,才会显示工具提示文本。但我正在测试鼠标悬停功能,不应该点击图标。这太奇怪了。

EN

回答 5

Stack Overflow用户

发布于 2013-03-14 13:57:30

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

简单地在谷歌上搜索一下,似乎应该有以下几条思路:

代码语言:javascript
复制
WebElement element = driver.FindElement(
     By.XPath("//div[@class='icon_png information icon_baggageyes']"));
string titleText = element.getAttribute("title");

之后,您可以验证titleText是否与预期一致。

票数 2
EN

Stack Overflow用户

发布于 2013-11-16 00:40:05

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

代码语言:javascript
复制
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秒或更长时间的显式睡眠获得了所需的可靠性。

我相信还有更好的选择,但这对我来说很有效!

票数 1
EN

Stack Overflow用户

发布于 2014-01-24 16:04:00

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

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15401945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档