2

我的要求是验证 Image Hover 是否正在使用 Webdriver。当我将鼠标悬停在下面的图像上时,该图像标记标题值正在发生变化。

普通的:
[img title="ASPIRIN" "src="http://img.med.com/pi/LNK01570.jpg" class="preview">

如果我将鼠标悬停在该图像上:
[img title="" "src="http://img.med.com/pi/LNK01570.jpg" class="preview">

所以在这里我试图比较标题值来验证图像悬停。我已经为此编写了代码,当我在不使用 Grid 的情况下执行脚本时它工作正常。但是使用 Grid mouseOver 不能正常工作。图像标记值不会更改。使用网格有什么问题吗?我正在使用 FF17 和 Selenium 2.28.0 和 Selenium 2.25.0。

我的代码:

String strVal1 = driver.findElement(By.xpath("//table[@id='ref_priceimgtable']/tbody/tr[12]/td[4]/img")).getAttribute("title");
        System.out.println(strVal1);
        WebElement element = driver.findElement(By.xpath("//table[@id='ref_priceimgtable']/tbody/tr[12]/td[4]/img"));
        Locatable hoverItem = (Locatable) element;
        hoverItem.getLocationOnScreenOnceScrolledIntoView();
        Mouse mouse = ((HasInputDevices) driver).getMouse(); 
        mouse.mouseMove(hoverItem.getCoordinates());
        String strVal2 = driver.findElement(By.xpath("//table[@id='ref_priceimgtable']/tbody/tr[12]/td[4]/img")).getAttribute("title");
        System.out.println(strVal1+"Null Value");

在上面的代码strVal1strVal2应该是不同的。

4

1 回答 1

1

 String strVal1 =driver.findElement(By.xpath("//table[@id='ref_priceimgtable']/tbody/tr[12]/td[4]/img")).getAttribute("title");

System.out.println(strVal1); WebElement element = driver.findElement(By.xpath("//table[@id='ref_priceimgtable']/tbody/tr[12]/td[4]/img")); Actions mouseOver = new Actions(driver); mouseOver .moveToElement(element).build().perform(); String strVal2 = driver.findElement(By.xpath("//table[@id='ref_priceimgtable']/tbody/tr[12]/td[4]/img")).getAttribute("title"); System.out.println(strVal1+"Null Value");

您是否尝试过这种鼠标悬停方法?如果你尝试这个方法意味着你有没有调用firefox配置文件的方法“profile.setEnableNativeEvents(true);” ? . 该方法是 firefox 在 selenium 中处理鼠标悬停所必需的。

请尝试一下,我认为这在网格中也可以正常工作。

于 2013-02-11T07:02:53.700 回答