2016-08-29 77 views
1

我剛開始使用Behat和Selenium。我正在爲網站做測試自動化,我遇到了一些CSS選擇器在Chrome中工作但在Firefox中找不到的問題。Behat CSS選擇器在Chrome瀏覽器中工作,而不是在Firefox中

例如,我有這樣的在貝哈特:

然後我按下 「.topmember-resultList .resultListItem .resultListInteractions DIV:第n個孩子(1)」

在 'I按' 用於方法搜索元素與選擇器並點擊它。

正如我所說,它在Chrome中工作正常,但在Firefox中,測試失敗,因爲找不到該元素。這似乎只發生在我使用第n個孩子的時候。但afaik,Firefox(48.0)也應該支持這一點。

+0

你在兩個瀏覽器中手動檢查過嗎?有可能元素不顯示相同。如果可能,請提供完整的堆棧跟蹤。 – lauda

+0

從理論上說,在behat中使用很多這樣的選擇器沒什麼問題,但是你也可以考慮一個更簡單的測試。例如:'我應該看到x',然後'然後我按x',放棄所有的選擇器。只需使用您期望在鏈接/按鈕中看到的文字/內容即可。 – twill

+0

奇怪的是,似乎我已經通過將第n個孩子變成了第n個孩子來解決這個問題。這同樣適用於Firefox,也適用於Firefox。雖然這兩個瀏覽器中的元素是相同的。不知道爲什麼,但對我很好。 –

回答

0

這是我們所有人在嘗試從Chrome測試回收代碼到firefox測試時發現的一個大問題。

你可以嘗試以下方法:

創建一個抽象的背景下,你可以把所有的都在測試中沒有衝突的方法/步驟。 然後,您可以創建兩個從抽象類擴展的上下文,一個用於Chrome,另一個用於Firefox。通過這種方式,您可以爲兩個瀏覽器使用相同的方法,但在每個瀏覽器中使用不同的代碼。 (您需要區分behat.yml文件中的瀏覽器上下文定義) 在chrome上下文中,可以使用正在工作的cssSelector放置原始方法。 在Firefox中,創建相同的方法,但使用與Firefox配合使用的CssSelector。或者使用Xpath選擇器,這在Firefox中也是一個很好的解決方案。

希望它有幫助。

相關問題