2012-05-15 20 views
19

私の会社の開発者はCSSレスポンスのウェブサイトを実装しており、Seleniumを活用して作業をテストする方法が混乱しています。私はRubyでSelenium WebDriver(Selenium 2)を使っています。レスポンシブCSSをSeleniumでテストする方法はありますか?

オンラインでいくつかの調査をした後、私は複数のツールに出くわしましたが、自動化する価値はありません.aaa ...手動で異なる画面サイズでチェックする単なるWebツールです。

いくつかの例 -

  1. Device Testing for Resonsive CSS Layouts (Manual)
  2. Responsinator
  3. Responsive.is
  4. Responsivepx

(より多くの制御などはるかに良い)しかし、私は上記の非常に簡単に使用してセレンなどを達成することができますよく使うsel2/ruby​​

@driver.manage.window.resize_to(480, 725) #iphone potrait 

CSSは、 "応答" であれば、実際に自動的にをテストする方法

  • とが必要ですか?
  • ページがウィンドウのサイズ変更に応答しているかどうかを確認するためによく使用される属性/アスペクトは何ですか?
  • SeleniumからQA対応のCSSを使用した人はいますか?
+1

上記のWebツールはResponsive Web Designの手動テストには本当に良いです –

+0

もう2つのツールがあり、RWDテストに使用しています:http://lab.maltewassermann.com/viewport-resizer/ http: /responsive.victorcoulon.fr/ –

答えて

5

私はこれを行う2つの方法を考えることができます。

1つ - それぞれのサイズ、位置、可視性などを確認することができます。各サイズ変更の後、レイアウトが変更されているかどうかを確認するために、

2次画像比較。各リサイズの後、ページのスクリーンショットを撮り、以前に保存したパターンと比較することができます。それを達成するためのさまざまな画像比較ライブラリがあります。当社ではImageMagickを使用しています。しかし、画像の比較は、開発中のページや内容が変化するページには適していません。この問題を回避するには、javascriptで変更しやすいページの部分を隠す(これはWebDriverで実行可能です)。

私は、応答性のあるページを手動でも自動でもテストする機会がなかったことを認めなければならないので、上記は私の考えです。私は「通常の」ページをテストするためにイメージ比較を使用しますが、それが応答性の高いページにも適しているかどうかはわかりません。

EDIT

残念ながら、私は、Rubyを知りません。以下はJavaの例ですが、理解してRubyに翻訳してくれることを願っています。このコードは、リストからすべての要素のサイズと場所を単純に出力します。 getLocation()とのgetSize()のすべての呼び出しがJSを引き起こす

org.openqa.selenium.Point point; 
org.openqa.selenium.Dimension dimension; 

List<WebElement> elementsList = driver.findElements(By.xpath("//some/xpath")); 

for (WebElement element : elementsList) 
{ 
    point = element.getLocation(); 
    dimension = element.getSize(); 
    System.out.println("Element name: " + element.getTagName()); 
    System.out.println("Element size: " + dimension.height + "x" + dimension.width); 
    System.out.println("Element location: " + point.x + ":" + point.y); 
} 

注(値を得るために)実行されると、それは時間がかかり。Element.getSize()。height + "x" + element.getSize()。width - 上記の例に比べて2倍の時間がかかります。

Rubyでは上記の方法は、element.locationと呼ばれ、応答性の設計の自動テストのためのソリューションようになりました

+0

あなたのお返事ありがとうございます。サイズと場所に関するサンプルコードがありますか? – Amey

+0

答えを編集してサンプルコードを追加しました。 – JacekM

+0

ちょっと@JacekM、私はRubyでそれを実装しようとして、あなたに戻ってみましょう。 – Amey

10

をelement.size - ガレンFrameworkは。 私は、ブラウザ間の互換性のために、ウェブページのレスポンシブデザインとウェブサイトのレイアウトをテストできるツールに取り組んできました。ツールはこちらから入手可能http://galenframework.com

ブラウザでWebページを開き、ブラウザウィンドウのサイズを必要なサイズに変更し、ページ上の要素の位置を取得するためにSeleniumを使用します。 それは、異なるデバイス(ブラウザのサイズ)のページの外観を記述するための特別な構文を持ってい

ここでは、基本的なWebページ骨格をテストするための小さな一例です:

# Objects definition 
===================================== 
header     id header 
menu     css #menu 
content     id content 
side-panel    id side-panel 
footer     id footer 
===================================== 


@ all 
------------------------------- 
header 
    inside: screen 0px top left right 

menu 
    centered horizontally inside: screen 
    below: header 0px 

content 
    below: menu 0px 
    inside:screen 0px left 

@ desktop 
-------------------------------- 
side-panel 
    below: menu 0px 
    inside: screen 0px right 
    width: 300px 
    near: content 0px right 
    aligned horizontally top: content 

@ mobile 
-------------------------------- 
content, side-panel 
    width: 100% of screen/width 


side-panel 
    below: content 0px 

後で、いずれかの単一でテストを実行することができますコマンドを実行するか、別のテストスイートを作成して、より多くのアクションを実行することができます(たとえば、カスタムJavaScriptを挿入する、またはWebDriverなどで何かを実行するなど)。上記の例を単一のコマンドで実行するには、次のようにします:

galen check homepage.spec --url "http://example.com" --size "400x600" --include "mobile,all" --htmlreport "reports" 

これは基本的なものでした。公式サイトにはもっと多くの例があります。

はまた、ウェブページhttp://mindengine.net/post/2013-11-16-tdd-for-responsive-design-or-how-to-automate-testing-of-website-layout-for-different-devices/

+1

素晴らしいツール! Firefox以外のブラウザを使用することは可能ですか? IE?クローム? Android? –

+0

確かに。後で、Selenium Gridに対してGalenテストを実行する方法についての記事を投稿します。これにより、Webサイトの変更が他のブラウザのレイアウトを壊さないようにすることができます。 –

+1

また、別のOS(Selenium-RC)でテストを行う方法を示すことも素晴らしいでしょう。 –

0

を設計するとき私たちは、複数の方法

1.スクリーンショット比較でこれをacheiveすることができますTDD方式(テスト駆動開発)を使用する方法について説明し紹介記事があります: selenium webdriverを使用すると、指定されたWebサイトのURLに移動し、ブラウザをさまざまなサイズに変更し、スクリーンショットを比較します。両方のスクリーンショットが同じである場合、指定されたWebサイトは応答しません。この方法は、ウェブサイトのスクリーンショットを撮っている間にスライドショーが存在すると仮定しているため、特定のウェブサイトに存在するスライドショー画像が変更され、異なるスクリーンショットを取得することになります。両方のスクリーンショットは異なるものであり、特定のサイトが応答するよう、私たちは応答を得ることができます

2.原稿幅:与えられたウェブサイトのURLにアクセスして、モバイルデバイスのサイズにブラウザを変更して取得するにはJavaScriptを実行webdriverをセレンを使用して原稿の幅。与えられたウェブサイトのURLにアクセスして、モバイルデバイスのサイズにブラウザを変更し、スクリーンショットを撮るwebdriverをセレンを使用した:幅は、モバイルデバイスの最大幅よりも小さい場合、私たちは与えられたウェブサイトは

3.スクリーン幅が応答すると仮定することができますスクリーンショットイメージの幅を取得します。幅がモバイルデバイスの最大幅よりも小さい場合は、指定されたウェブサイトが応答可能であると見なすことができます。私はこのアプローチで複数のサイトをテストし、期待される結果を得ました。指定されたサイトをチェックするステップは反応的かどうかです。セットアップと非常に使いやすいhttps://github.com/BBC-News/wraith - あなたの主な目的は、UIの変更をテストすることで、セレンはあなたがBBCレイスを使用することが絶対条件ではない場合http://jagadeeshmanne.blogspot.in/2014/03/checking-website-is-responsive-or-not.html

1



はでのコーディングについての詳細を参照してください。