2011-12-20 122 views
7

有沒有一種方法來設置Selenium Webdriver在ruby中的執行速度。setSpeed在Selenium WebDriver使用Ruby

在Perl中硒1(RC)有$sel->set_speed("500");

但由於硒RC的一些限制,我不得不轉移到硒的webdriver,不得不開始使用Ruby和我找不到的功能相同。

在C#和Perl中設置速度的參數,而不是在Ruby中,在某處選擇「Slow」,「Medium」和「Fast」選項。

注 - 我有這個@driver.manage.timeouts.implicit_wait = 30超時設置,但我正在尋找執行速度。

回答

10

前段時間,所有語言綁定都不贊成在WebDriver中設置執行速度的方法。不再可以修改正在運行的WebDriver代碼的執行速度。

+0

那麼最好的解決問題的方法是點擊一個鏈接 - 一個彈出窗口,我需要將密鑰發送到該彈出框中的文本框。彈出式窗口有時需要較長時間才能加載,因此,即使它出現,該文本框ID的find_element也會失敗。我認爲搜索元素ID的嘗試立即開始,即使彈出窗口在30秒之前加載(我的顯式超時),腳本也會失敗。 – Amey 2011-12-22 16:21:48

+1

你需要某種明確的等待例程;隱含的等待可能無助於你。在項目直接支持的語言(Java,.NET,Ruby,Python)中,這可以使用WebDriverWait類(或其等價物)來完成。此外,答案取決於「彈出」的含義。這是一個新的瀏覽器窗口嗎?如果是這樣,您需要使用driver.switch_to.window()將焦點放在正確的上下文中。如果它是由諸如jQuery之類的JavaScript小部件框架創建的「彈出式窗口」,則在等待例程中使用find_element。 – JimEvans 2011-12-22 18:15:48

+0

因此它彈出一個新窗口,linkedin登錄授權更準確。我通過使用handles = @ driver.window_handles @ driver.switch_to.window(handles [1])將控制權轉移到新窗口,但是會發生什麼......彈出窗口可能會像第二個或兩個實際上「彈出」,在此期間切換到窗口失敗,並且所有步驟顯然都失敗。我目前已經放置了... 2秒的睡眠時間(點擊鏈接並等待切換到新窗口)。但我相信有更好的方法。 – Amey 2011-12-22 19:08:10

0

按照http://selenium.googlecode.com/svn/tags/selenium-2.10.0/rb/lib/selenium/client/idiomatic.rb中有2種方法Selenium.Client.Idiomatic模塊:

# Get execution delay in milliseconds, i.e. a pause delay following 
    # each selenium operation. By default, there is no such delay 
    # (value is 0). 
    def execution_delay 
    string_command "getSpeed" 
    end 

    # Set the execution delay in milliseconds, i.e. a pause delay following 
    # each selenium operation. By default, there is no such delay. 
    # 
    # Setting an execution can be useful to troubleshoot or capture videos 
    def execution_delay=(delay_in_milliseconds) 
    remote_control_command "setSpeed", [delay_in_milliseconds] 
    end 

我想這會有所幫助。

+1

不能工作,這些功能是Selenium Client Idiomatic模塊的一部分,它不包含在Webdriver模塊中?我認爲。 – Amey 2011-12-21 16:45:12

+0

這是我得到的錯誤'NoMethodError:未定義的方法'execution_delay'爲#' – Amey 2011-12-21 16:46:46