Quantcast
Channel: w3cplus
Viewing all articles
Browse latest Browse all 1557

响应式网站Gilt.com之三:Selenium Edition!

$
0
0

本文由Spy根据tech.gilt.com的《Responsive Gilt.com: Selenium Edition!》所译,整个译文带有我们自己的理解与思想,如果译得不好或有不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://tech.gilt.com/post/91076463569/responsive-gilt-com-selenium-edition

——作者:tech.gilt.com

——译者:Spy

在本系列的第二篇文章中,我的同事Greg Mazurek讲了为什么在项目使用“在选择器内使用媒体查询”。采用这种模式的好处就是在未来开发中代码可维护性更强。那么,接下来我将讨论我们如何把相同的原则应用到测试实践中来。

我们曾认真思考过——如何减少代码量,甚至可以避免在未来发生的不利变化。Gilt开发团队使用自动化测试来测试所有的app,不幸的是,其中很多测试都已不再适用此时的响应式设计环境,因为一些页面元素已被移动、隐藏、改变或者添加。此外,如果开发人员想改变CSS属性来增强平板上体验,却又担心是否影响了手机用户的体验。修改类名称,js功能修改或者指定CSS修改都可能导致不好的后果。

为了解决这类问题,特别行动小组已经写了Selenium自动化测试来测试响应式页面——具体点,是去测试每个响应断点。(Selenium是一个允许你在浏览器里自动化应用的web测试框架,健壮的API能够像用户那样与你的页面做交互,并且能够处理大部分自动化情景)首先,要有一个预设某断点视图的浏览器作为测试——例如,iPhone竖屏的最大宽度为479px,然而当横屏时,视图最小宽度为480px,最大宽度为767px。Selenium通过web驱动对象是很容易做到的。

代码演示如下:

def resizeWindow(width: Int, height: Int)(implicit webDriver: WebDriver) = { webDriver.manage().window().setSize(new org.openqa.selenium.Dimension(width, height)) } 

上面的代码块会在每个测试开始之前被执行。在页面被加载之前执行它,不是之后,会根据相应的断点(不进行缩放页面,但可能引起一些视图问题)进行适应。在初始页面被加载之前执行代码,有助于确保自动化在浏览器完成缩放之后启动。

举个例子

为了确保页面能够响应于屏幕或者设备的视窗,这里有一个基础的测试。它是用Selenium写的缩放测试,还有一些jQuery代码(其实有很多方法来测试,可我更喜欢这种):

describe("When resizing the browser to 479px and navigating to product listing page") { 
    it("should fit all the elements within the 479px limit") { 
        val expectedPageWidth = 479 
        resizeWindow(width = expectedPageWidth, height = 800) 
        webDriver.navigate().to("http://www.gilt.com/sale/men") 
        // Using scrollWidth instead of width(), to get the true width of the html container 
        val actualPageWidth = 
        webDriver.asInstanceOf[JavascriptExecutor] 
        .executeScript("return $('html')[0].scrollWidth;").asInstanceOf[Long]
         actualPageWidth.toInt should be <= expectedPageWidth 
    } 
} 

(备注:你的页面不应该可以向右滑动)

这就是我要讲的所有知识。如果你没有其他测试,至少这个还可以保证你的网站仍然是响应式的。但是我们还是强烈推荐添加更多对网站功能方面的测试。

译者手语:整个翻译依照原文线路进行,并在翻译过程略加了个人对技术的理解。如果翻译有不对之处,还烦请同行朋友指点。谢谢!

关于Spy

原名吴建杰,常用昵称“间谍”,现居广州。目前不断学习CSS3,HTML5等前沿技术,巩固js基础知识。在进行前端开发的过程中,追求HTML便签语义化,CSS的重用性,js封装等很多性能优化的操作,一切以用户体验为基础,不断地追求性能优化。希望与更多的同行朋友一起共勉:个人博客,新浪微博

如需转载,烦请注明出处:

英文原文:http://tech.gilt.com/post/91076463569/responsive-gilt-com-selenium-edition

中文译文:http://www.w3cplus.com/responsive/responsive-gilt-com-selenium-edition.html


Viewing all articles
Browse latest Browse all 1557

Trending Articles