2016-02-25 67 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 
相关问题