Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 让Selenium使用任何浏览器?_Python_Selenium_Selenium Webdriver_Wxpython - Fatal编程技术网

Python 让Selenium使用任何浏览器?

Python 让Selenium使用任何浏览器?,python,selenium,selenium-webdriver,wxpython,Python,Selenium,Selenium Webdriver,Wxpython,我正在尝试编译我使用Python和Selenium库编写的一些代码。但是,Selenium会让您指定要使用的浏览器 e、 g 因此,如果我将程序编译成.exe或其他形式的可执行文件,然后在没有Firefox的计算机上运行,它将无法工作。那么,我有没有办法告诉Selenium只使用默认浏览器?或者有没有一种方法可以让我在同一个程序文件夹中安装一个可移植版本的Firefox(有点像Tor Bundle),这样它就可以工作了 我想到了创建一组嵌套的try/excepts并以这种方式尝试所有可能的浏览器

我正在尝试编译我使用Python和Selenium库编写的一些代码。但是,Selenium会让您指定要使用的浏览器

e、 g

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

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

编辑:
如果有人告诉我在wxPython窗口中显示selenium的大致方向,我也会非常感激。

一个可能的逻辑是

  • 第一个缺陷是系统的默认浏览器是什么
  • 然后在Selenium代码中,使用一个开关,如
  • 第一步可能很棘手,Windows上的C#可以从注册表中执行。不知道如何用Python编写代码,也不知道如何处理Linux/Mac等其他系统

    然而,您的想法终究不会如愿,因为Selenium版本需要与浏览器版本匹配

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

    Chrome也是一样,不同版本的ChromeDriver支持不同版本的Chrome。你怎么知道你需要包括哪个ChromeDriver?ChromeDriver 2支持27及以上版本的Chrome,每个版本都有更具体的版本要求,请参阅发行说明。如果有人使用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)
    

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

    不,我不认为OP正在进行测试。据我所知,他在他的应用程序中使用了Selenium,这将提供给客户。是的,这就是我正在做的,我认为没有任何其他浏览器自动化工具可以帮助我做到这一点。请注意,找到默认浏览器不是一件容易的事,特别是跨平台的。
    browser = get_default_browser_name()
    
    if browser = firefox
        then launch firefox
    if browser = chrome
        then launch chrome
    if browser = ie
        then launch ie
    
    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    binary = FirefoxBinary('path/to/binary')
    driver = webdriver.Firefox(firefox_binary=binary)