让Selenium适用于任何浏览器?

时间:2014-03-13 04:22:57

标签: python selenium selenium-webdriver wxpython

我试图编译一些我用Python和库Selenium编写的代码。但是,Selenium会指定使用哪个浏览器

e.g。

driver = webdriver.Firefox()

因此,如果我将程序编译成.exe或其他形式的可执行文件,然后将其运行到没有Firefox的计算机中,它就无法工作。那么有没有办法告诉Selenium只使用默认浏览器?或者有没有办法让我在同一个程序文件夹上安装一个可移植版本的Firefox(有点类似于Tor Bundle),所以它有效吗?

我想到了创建一堆嵌套的try / excepts并以这种方式尝试每个可能的浏览器的解决方案,但我认为可能有更好的方法。

编辑: 如果有人指出我在wxPython窗口中显示selenium的一般方向,我也将不胜感激。

2 个答案:

答案 0 :(得分:2)

一个可能的逻辑是

  1. 第一个缺陷是系统的默认浏览器
  2. 然后在您的Selenium代码中,使用开关,例如
  3. browser = get_default_browser_name()
    
    if browser = firefox
        then launch firefox
    if browser = chrome
        then launch chrome
    if browser = ie
        then launch ie
    

    第一步可能很棘手,Windows上的C#可能来自注册表。不确定如何在Python中编写代码或如何处理其他系统,如Linux / Mac。

    然而,您的想法毕竟不会按预期工作,因为Selenium版本需要与浏览器版本匹配。

    例如,如果您的程序中有Selenium 2.40.0,但有些用户每晚使用Firefox(这是FF30),那么它将无效,因为Selenium目前不支持FF30。

    对于Chrome,不同版本的ChromeDriver支持不同版本的Chrome。你怎么知道你需要包含哪个ChromeDriver? ChromeDriver 2支持27及更高版本的Chrome,每种版本都有更具体的版本要求,请参阅发行说明here。如果有人使用Chrome 26或以下版本怎么办?更麻烦。

    我建议您包含自己的便携式Firefox,然后在启动浏览器时指定二进制位置。

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    binary = FirefoxBinary('path/to/binary')
    driver = webdriver.Firefox(firefox_binary=binary)
    

答案 1 :(得分:0)

BrowserStackSauceLabs等云解决方案可以缓解您的痛苦。您可以从任何连接Internet的主机上执行测试,以对照在远程VM上运行的浏览器。