2016-02-26 27 views
0

由於Selenium可以遍歷JavaScript網站(Mechanize不能),並且Mechanize可以發出Post請求(Selenium不能),在某些情況下,使用這兩種方法會很有用。代表Selenium/WebDriver機械化發佈請求?

+ Zarkonnen對this question的回答表明,最初會使用Selenium,然後Mechanize會介入發出請求並將其傳遞給Selenium。

如何將Mechanize post方法整合到Selenium中?

我正在使用這些庫的Ruby版本,但任何信息都會有用。

enter image description here

編輯這裏的維恩圖,希望能夠澄清我要求的功能。

在這種情況下,「Javascript網站」僅僅意味着一個網站,如果沒有啓用javascript,其功能將無法正常工作。意思是說,我需要遍歷一個網站才能在該網站上找到一個表單。一路上,我遇到了沒有啓用javascript的按鈕。然後,爲了讓表單按我想要的方式工作,我必須自定義帖子。在這種情況下,Selenium WebDriver和Mechanize都不能自己處理它們 - 它們需要彼此的幫助。

你會怎麼做到這一點?你會使用Selenium,然後讓機械化步入幫助,當你不得不做這個職位?你會使用其他方法在Selenium中發佈帖子嗎?你會使用水豚寶石?我在WebDrivers製作文章時遇到了限制,但我知道必須有一個解決方法。

+0

一般來說,人們使用水豚而不是機械做這種東西。您可以將Capybara配置爲使用硒驅動程序(或webkit或poltergeist/phantomjs)並獲得相同的結果。它比用相當簡單的DSL語法機械化更強大。也許嘗試一下。 –

+0

@Josh - 沒有人通常不使用水豚,硒(watir)實際上是一個更受歡迎的紅寶石庫。 – pguardiario

+0

很難說出你在問什麼,你想知道如何來回傳遞cookie,或者如何將一個Mechanize :: Page body變成Selenium瀏覽器html? – pguardiario

回答

1

這個問題有點含糊,但Selenium(WebDriver)和一個很好的非交互式HTTP庫(如Mechanize)是測試人員庫中的關鍵元素。

一般來說,如果您需要在交互式場景中模擬人類,那麼您無法擊敗WebDriver。然而,網絡是建立在HTTP之上的,Selenium所做的一切都是HTTP,所以你的場景交互性越低,模擬真實用戶所需的就越少,性能越重要,機械化越需要,甚至可能更多低級別的HTTP庫。

正因爲如此,儘管這兩種技術是互補從某種意義上說,我想不出所有許多很好的理由在一起使用它們。但也許以下幾點:

  • 管理的webdriver在網站上用戶,機械化用於查詢REST端點傾倒指標,清除緩存,運行使用報告,揭開序幕的同時請求來模擬併發。
  • 機械化用於在WebDriver運行之前播種/準備測試數據。

這些都是例子,其中的webdriver 可以用於一切,但它會極大地更容易,更有效地使用非交互式工具。