2017-12-04 8 views
-1

私が扱っているAngularJSアプリケーションは現在3つの言語で翻訳されています。私たちが翻訳を処理する方法は、各言語のlocale.jsファイルがあり、各ファイル内にキーと値のペアが存在します。たとえば:セレンと分度器を使って言語ローカリゼーションテストを自動化する

フランス語locale.js

WARNING: "Attention", 

SAVE: "Enregistrer", 

NEW: "Nouveau", 

英語locale.js

WARNING: "Warning", 

SAVE: "Save", 

NEW: "New", 

は、ページ内のすべてがローカライズされているかどうかをテストするために、我々は第四の言語を作成しました(XXXXXX)。すべてがローカライズされているかどうかをテストするには、言語を(XXXXXX)に設定し、アプリケーションを実行して、XXXXXXのみを確認します。

注:私たちはすべてがローカライズされているかどうかをチェックするこのプロセスを自動化したいので、私が最初にテストを自動化するためにセレンや分度器を使用して開始IPアドレスとサーバ側の情報のような

をローカライズする習慣いくつかのものがあります。

私はそれを自動化しようとしていたかのハイレベルな考え方は次のとおりです。

私はローカライズする必要はありませんでした各htmlタグの前にクラスを追加しました。 (class = "notLocalized")。その後、DOMからすべてのhtmlコンテンツを取得しました。私はそれを特定の方法で解析しなければならなかった、そして、私は各文字列thats not(XXXXXX)とそれが(notLocalized)と呼ばれるクラスを持っているかどうかを調べた。それがこのクラスを持っていない場合、私はテキストがローカライズされている必要があることを知っています。

私の主な問題は、私はDOMから取得したテキストを解析する必要があり、解析方法は各ページに固有のことです。理由は、私が戻ってくるテキストが各ページと異なっているからです。私は私のアプローチにいくつかの他の問題を抱えていますが、これは主なものです。

私の質問は、これはSelenium/Protractorがこれに使用する最良のツールですか?もしそうなら、どのようにして自動ローカライゼーションテストを実装しましたか?

+0

HTMLで 'lang'属性を使用して言語を特定しない理由は何ですか? https://www.w3schools.com/tags/ref_language_codes.asp – HaC

+0

私の問題は言語を決定することではありません。私は自分の言語のローカリゼーションが現在どのように設定されているかを説明していただけで、ローカリゼーションのテストを自動化する方法を見つけようとしています。 ローカライゼーションテストの自動化に役立つlang属性の使用方法をご覧ください。 –

答えて

0

これは私の謙虚な意見なので、価値があると思ってください。私はページ上のすべての要素をつかむことが間違ったアプローチだと思う。任意のページで、ローカライズする必要がある特定の要素が必要です。各ページのどの要素をローカライズする必要があるか正確に分かっているので、のみでこれらの要素をチェックしてください。私はこれが解析の問題を解消すると思います。ドキュメント全体を解析することで、問題を難しくしていると思います。

ここではこの問題にどのように対処しますか。渡す各要素のテキストがローカライズされたテキストであることを確認するヘルパークラス/関数を自分で作成します。

function isLocalized(element) { 
    return element.getText() === 'XXXXXX'; 
} 

あなたのテストでは、チェックしたい要素を渡すことができます。

+0

ありがとうございました! 近い将来、誰かがページにテキストを追加してローカライズに失敗した場合、追加したhtml要素がローカライズされていないことを検出するテストが必要になります。 ページの最上位ノードからすべてのhtmlを取得する理由は、ページ内のすべてのテキストを取得してローカライズされたものがすべてローカライズされていることを確認できるためです。つまり、誰かが新しいテキストを追加した場合、私のテストでは理論上それを検出することができます。 –

関連する問題