2016-02-25 64 views
-1

如果有一種方法可以知道哪種瀏覽器正在運行測試? 我使用它的規劃,如果statemente是這樣的:使用Selenium WebDriver和Ruby時如何知道我使用的瀏覽器類型?

if $driver.kind_of? Selenium::WebDriver::Firefox 
    # some code 
end 

我有試了一下,「is_a?」「instance_of?」。以及一些模塊和類像Selenium :: WebDriver :: Firefox :: Profile等。 可能是我在錯誤的軌道上...

+0

我可能認爲你可以使用'$ driver.capabilities.browser_name ==「chrome」' – Buaban

+0

讓您的測試針對特定瀏覽器是一個非常糟糕的主意。另外,如果你正在編寫測試,你選擇WebDriver,所以你已經知道了什麼瀏覽器。你不應該測試它。 –

+1

@AndrewRegan我知道你的意思,但在這種特殊情況下,firefox在測試的某個部分具有特殊行爲,另一部分是chrome。所以我不得不使用If語句來捕捉兩種可能的行爲。而且我必須品嚐,因爲我定義了Firefox,Chrome和Safari的WebDriver,並且3將被測試,所以事實上,如果沒有對那個時候使用的網絡驅動程序的評估,我不會是瀏覽器。我會發布我得到的解決方案。 – Punkmati

回答

0

非常簡單的獲取目前測試中使用的瀏覽器的方法。 的webdriver是這樣定義的:

def setup 
    client = Selenium::WebDriver::Remote::Http::Default.new 
    client.timeout = 120 
    case $browserName 
     when "firefox" 
      $browser = Selenium::WebDriver.for(:firefox, :http_client => client) 
     when "chrome" 
      $browser = Selenium::WebDriver.for(:chrome, :http_client => client) 
     when "safari" 
      $browser = Selenium::WebDriver.for(:safari, :http_client => client) 
     when "IE" 
      $browser = Selenium::WebDriver.for(:internet_explorer, :http_client => client) 
     else 
      puts "ERROR: Wrong browser name!!" 
    end 

    $browser.get "" 

    $wait = Selenium::WebDriver::Wait.new(:timeout => 30) 

end 

所以用這個簡單的語句,我可以得到的名稱在webdriver的定義:

browser_name = $browser.browser.to_s 

只需在

if browser_name == "firefox" 
    #some code 
end 
相關問題