2016-08-29 1 views
1

私はちょうどBehatとSeleniumで作業を始めました。私はウェブサイトのテストの自動化を行っていますが、一部のCSSセレクタはChromeで動作しますがFirefoxでは検出されないという問題があります。BehatのCSSセレクタは、Firefoxではなく、クロームで動作します。

例えば、私はBehatでこれを持っている:ANは 'Ipress' メソッドを検索

それから私は、 "n番目の子(1).topmember-resultList .resultListItem .resultListInteractions DIV" を押してください要素をセレクタで選択してクリックします。

私はChromeでうまく動作すると言いましたが、Firefoxでは要素が見つからないためテストが失敗します。それは、n番目の子供を使うときにのみ起こるようです。しかしafaik、Firefox(48.0)も同様にそれをサポートすべきです。

+0

両方のブラウザで手動でチェックしましたか?要素が同じに表示されない可能性があります。可能であれば、完全なスタックトレースを提供してください。 – lauda

+0

理論的には、このような多くのセレクタをbehatで使用すると何も問題はありませんが、よりシンプルなテストを検討することもできます。例えば、「私はXが見えるはずです」の後に「次にxを押す」と言い、すべてのセレクタを強制します。リンク/ボタンに表示されることを期待しているテキスト/コンテンツを使用してください。 – twill

+0

奇妙なことに、nth-childをnth-of-typeにすることで、私はそれを解決したようです。これはFirefoxと同じように機能します。両方のブラウザで要素は同じですが。なぜ私と一緒にいいのか分かりません。 –

答えて

0

クロムテストからファイアフォックステストにコードをリサイクルしようとすると、大きな問題が発生します。

あなたは次のことを試すことができます。

あなたのテストで競合を持っていないすべてのメソッド/ステップを置くことができ、抽象コンテキストを作成します。 次に、抽象クラスから拡張する2つのコンテキストを作成できます.1つはクロム用、もう1つはfirefox用です。このようにして、両方のブラウザーで同じメソッドを使用できますが、それぞれに異なるコードがあります。 (あなたのbehat.ymlファイル内のブラウザのコンテキスト定義を区別する必要があります) クロムコンテキストでは、作業中のcssSelectorを使用して元のメソッドを配置できます。 Firefoxの場合、同じ方法を作成しますが、firefoxで動作するCssSelectorを使用してください。または、Xpathセレクタを使用すると、Firefoxでも良い解決策になります。

希望します。

関連する問題