2015-04-05 63 views
0

請問I.Expect.Text(「sometext」)是否需要In方法與指定的選擇器?使用I.Expect.Text和fluentautomation

我問問作爲我繼承的一些測試沒有方法追加,我們的測試通過,即使當我知道所提供的文本不存在頁面上。

我已經看過文檔,重新http://fluent.stirno.com/docs/#asserts-text - 它似乎並不清楚(對我來說),在選擇器必須存在。我假設它需要在場。

我想我問的是,如果方法確實需要附加爲了使斷言正常工作,我會流利地說明「sometext」是否出現在任何div或p標籤或類在頁面上,或者我應該在整個使用ID。我在https://github.com/stirno/FluentAutomation/issues/133看到有用的東西。

所以像下面這樣的東西可以被包裝到AssertSyntaxProvider的擴展方法中,但它看起來笨手笨腳?

 var texts = I.Find("html").Elements.Select(el => el.Item2().Text); 
     I.Assert.True(() => texts.Any(t => t.Contains("statement1"))); 
     I.Assert.True(() => texts.Any(t => t.Contains("statement2"))); 
     I.Assert.True(() => texts.Any(t => t.Contains("statement3"))); 

幫助讚賞!

最後一件事 - 這是一個很棒的圖書館!

回答

2

是的,需要In作爲鏈的執行塊。它已經有一段時間了,因爲我已經能夠專注於擴展FluentAutomation,因此對多個元素進行斷言並沒有多少好處。

我確實有一個很好的計劃,我只是沒有時間實施。

至於你具體的測試,你接近我會爲現在使用:

I.Open("http://fluent.stirno.com"); 
var elements = I.FindMultiple("*").Children.Select(x => x()); 
I.Assert.True(() => elements.Any(x => x.Element.Text.Contains("v3.0 Released!"))); 

V3.1會有一些更好的方法來處理這個但這至少使用灒的*選擇獲取每個元素(警告:可能真的很慢,所以如果可以限制它,也許使用「div,p,span」或類似的東西)。

+0

優秀的建議,我一直在考慮選擇器「div,p,span」,所以現在就要使用它,直到v3.1!愛圖書館btw! – Paulwin 2015-04-05 18:43:20