【问题标题】:How Can we test The presence of Image Zoom in a E-commerce website我们如何测试电子商务网站中 Image Zoom 的存在
【发布时间】:2014-11-16 18:21:16
【问题描述】:
如果您访问印度电子商务网站 Flipkart,您会在任何列出的商品中找到缩放图像功能。只要鼠标悬停在文章上方,此功能就会打开文章的缩放图像。
我的问题是——我们能否确定,图片实际上在网页中被放大了。
我的意思是,如果用户将鼠标悬停在文章图像上,缩放实际上已经打开并显示文章的缩放图像。
我们可以使用 Selenium Webdriver 自动化这种场景吗?
【问题讨论】:
标签:
testing
selenium
selenium-webdriver
automated-tests
【解决方案1】:
当您将鼠标悬停在 .productImage.current 上时,.productImageZoom 将从 display:none 设置为 display: block。像这样的东西应该可以工作:
Actions action = new Actions(driver);
WebElement elem = driver.findElement(By.cssSelector(".productImage.current"));
action.moveToElement(elem);
action.perform();
this.sleep(2); // This may not be necessary
if (driver.findElement(By.cssSelector(".productImageZoom")).isVisible())
{
// success!
}
【解决方案2】:
这是一个工作代码:
public class TestingECommerce {
public static void main(String args[]){
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
//Navigate to a shoe's page in flipkart
driver.get("http://www.flipkart.com/fila-scroll-sneakers/p/itmey3f8ssgrdgdh?pid=SHOEY3F8HUHFVYJ9&srno=b_1&ref=2918f415-8924-46e9-8b99-993850a8cb48");
//Hovering over image
Actions act = new Actions(driver);
act.moveToElement(driver.findElement(By.xpath("//div[@class='imgWrapper']/img[1]"))).build().perform();
//Waiting 10 seconds for the zoomed element to be visible
WebElement ele_zoom = driver.findElement(By.xpath("//div[@class='productImageZoom']"));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(ele_zoom));
if(ele_zoom.isDisplayed())
System.out.println("The zoom is visible");
else
System.err.println("The zoom isn't visible!!");
}
}
上面的代码导航到 Flipkart 网站中的鞋子页面。然后它悬停在图像上,这导致图像缩放视图的可见性。它会等待 10 秒,直到检测到元素的缩放视图的可见性,然后断言该元素的缩放视图是否正在显示。
【解决方案3】:
除了上面的答案,你当然可以通过获取 driver.getAttribute("src") 或类似的东西来检查所需元素的更多属性..