2017-04-05 24 views
0

我其實並沒有找到一個肯定的或不答案的這個問題。 Selenium WebDriver可以使用承諾還是回調,而不必使用Thread.Sleep或其他輪詢方法?VS與C#中的硒Webdriver - 使用承諾

當前正在使用C#自動化解決方案,並通過NuGet添加WebDriver來測試基於React的Javascript網頁。

任何幫助表示讚賞

感謝

+0

'WebDriverWait'和'ExpectedConditions'可能會完成你想要做的事情,雖然涉及到輪詢。 – mrfreester

回答

0

我假設你正在測試基於JavaScript的UI頁面。爲了測試API(服務),我們不能使用WebDriver。使用Selenium WebDriver,您只能測試網頁。

根據我的理解,如果我們使用像C#/ Java這樣的編程語言,我們在硒中只能使用3 type of waits(隱式,顯式,流利)。

在我目前的項目中,我們正在測試使用JavaScript開發的網頁。爲了測試這些,我們在使用cucumberJS時使用了Protractor(基於WebDriverJS)。當我們在JavaScript中編寫測試自動化時,我們有回調方法。我想如果我們使用C#進行測試自動化回調方法是不可能的

+0

對不起,你說得對,測試基於JavaScript的網頁。我之前在看量角器,而不是AngularJS,我的公司選擇了React。他們一直主要使用C#開發他們的測試框架/解決方案,但我開始認爲JS方法會更好 – Grimzy

0

是的,WebDriver C#允許您根據一些條件等待以避免使用Sleep s。一個典型的例子是,執行一個異步操作之後等待一些DOM元素(一個或多個),以顯示:

var node = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 3, 0)).Until(
       ExpectedConditions.PresenceOfAllElementsLocatedBy(
        By.XPath(".//*[contains(@ng-bind,'item.Value')]"))).First(); 
node.Click(); 

此等待最多三秒鐘的至少一種元素進行匹配提供XPath來顯示。

ExpectedConditions類有各種靜態方法來測試存在性,可見性,可點擊性等。

附註:與評論相關 - 哪一種WebDriver風味可能會引起注意,但在this article中進行了非常短的分析。