我有一个小行李图标,当鼠标悬停在该图标上时,会显示一个工具提示文本。我想通过在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()放入此代码中时,才会显示工具提示文本。但我正在测试鼠标悬停功能,不应该点击图标。这太奇怪了。
发布于 2013-03-14 13:57:30
既然工具提示是由div的title属性触发的,那么只检查该属性值如何?这取决于这样的假设:所有浏览器在悬停时都会将title显示为工具提示(据我所知,所有桌面浏览器都是这样做的)。
简单地在谷歌上搜索一下,似乎应该有以下几条思路:
WebElement element = driver.FindElement(
By.XPath("//div[@class='icon_png information icon_baggageyes']"));
string titleText = element.getAttribute("title");之后,您可以验证titleText是否与预期一致。
发布于 2013-11-16 00:40:05
我可能有点晚了,但我发现有效的是:
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秒或更长时间的显式睡眠获得了所需的可靠性。
我相信还有更好的选择,但这对我来说很有效!
发布于 2014-01-24 16:04:00
使用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);https://stackoverflow.com/questions/15401945
复制相似问题