2016-10-27 141 views
2

我需要你的幫助來連接與硒有關的東西。 現在在過去的幾周裏,我一直在閱讀關於Selenium文檔。 有硒IDE(記錄和重播測試的Firefox擴展) 硒RC - (硒1.0)。這似乎已被棄用,並使用代理HTTP服務器在多個瀏覽器上運行測試。 Selenium Web Driver - (selenium 2.0)。這是最新的一個,現在應該用於自動化測試。 (每個瀏覽器都實現了Web驅動程序API) 我還了解到,Web驅動程序與自動瀏覽器支持交互,不需要HTTP服務器。Selenium WebDriver和Selenium服務器

然後就是這個Selenium服務器。 (用java編寫的硒獨立服務器) 與selenium服務器的交互是通過JSON有線協議。 (其中每個語言綁定呼叫硒服務器傳遞JSON數據通過HTTP)

現在我有以下問題:

  1. 是否Selenium服務器相同硒 RC使用的代理服務器?

  2. 硒RC是否使用JSON線協議。

  3. 如果web驅動程序 與本地瀏覽器對自動化的支持相互作用,selenium服務器在哪裏適合Selenium 2.0。

  4. 假設我正在使用selenium 2.0,java客戶端 庫在鉻瀏覽器中運行我的測試。當我打電話給WebDriver API時, 如何與chrome驅動程序交互?它使用JSON線協議嗎?

... 我有更多的問題,而是需要上述的人的答案清除硒雲在我的頭上。

回答

1

1- Selenium Server 2.0與Selenium RC兼容。從1.0到2.0版本的版本主要是因爲他們將WebDriver API添加到服務器。所以,Selenium Server 2.0包括Selenium RC。

幾個月前,他們從Selenium Server中刪除了Selenium RC API,這是再次撞擊版本號的主要因素,這次是3.0。

注意:您仍然可以在Selenium 3中使用RC API(使用與Selenium Server .jar不同的傳統模塊),但由於RC API是使用WebDriver而不是Selenium Core實現的,一些測試可能會有不同的表現。

2-不,JSON Wire Protocol是WebDriver協議,類似於WebDriver接口或API。 W3C文檔here。 JSON有線協議可以看作是在客戶端/服務器通信環境中表示的方式,在We​​bDriver API綁定中定義的commands(例如,轉至特定的URL,單擊某個元素,...)。

3- Selenium Server是一個「WebDriver服務器」。您的測試腳本可以使用JSON有線協議與它進行通信併發送「WebDriver命令」。根據測試腳本所需的功能(例如您的測試腳本要使用哪個瀏覽器),然後Selenium Server以這種或那種方式「轉發/執行」這些命令。

如果您指定您需要HtmlUnit無頭瀏覽器,那麼Selenium Server不會將這些命令轉發給任何其他進程,而是使用與Selenium Server捆綁在一起的HtmlUnitDriver執行它們。

如果您指定您需要Chrome瀏覽器,那麼Selenium Server會將這些命令「轉發」到ChromeDriver(在Chrome的情況下,WebDriver驅動程序是完全獨立的「WebDriver Server」進程)。

我以這種方式,Selenium服務器是有用的集中在一個點上,在測試腳本之外,處理幾個瀏覽器的所有必要負擔。您可以將其配置爲處理多個瀏覽器。

除了您可以讓Selenium Server的行爲像grid一樣,並且只與一個端點(即集線器)交談,它將負責將測試分發到所有註冊的節點。

4-是的,部分已經解釋。只需添加一下,如果需要,您可以直接從測試腳本連接到ChromeDriver。