从python selenium测试生成exe文件

时间:2014-01-13 18:21:15

标签: python selenium pyinstaller

我尝试在exe文件中构建我的python selenium测试并在许多机器上运行它以保持测试独立于环境。但是结果* .exe文件找不到selenium webdriver。如何在* .exe文件中包含所有selenium依赖项?或者可能还有其他方式吗? 是否可以制作虚拟环境并进行分发?

4 个答案:

答案 0 :(得分:1)

我假设您使用py2exe生成exe。您需要在setup.py文件中指定selenium webdriver的位置。

以下代码应该有所帮助:

from distutils.core import setup
import py2exe

# Change the path in the following line for webdriver.xpi
data_files = [('selenium/webdriver/firefox', ['D:/Python27/Lib/site-packages/selenium/webdriver/firefox/webdriver.xpi'])]

setup(
    name='General name of app',
    version='1.0',
    description='General description of app',
    author='author name',
    author_email='author email',
    url='',
    windows=[{'script': 'abc.py'}],   # the main py file
    data_files=data_files,
    options={
        'py2exe':
            {
                'skip_archive': True,
                'optimize': 2,
            }
    }
)

答案 1 :(得分:0)

与大多数其他二进制文件一样,可能需要使用二进制文件包含DLL或您需要的任何库。例如:

C:\tests\
  run_tests.exe -- this will read from webdriver.dll
  selenium-webdriver.dll 

另外,从我的.NET时代开始,我知道你能够将库直接嵌入到EXE中,这使它变得相当大。

答案 2 :(得分:0)

您可以尝试pyinstaller,安装简单,使用方便。

安装:

pip install pyinstaller

要执行:

pyinstaller yourprogram.py

答案 3 :(得分:0)

这已经过时了,但我一直在寻找相同的东西,我确实需要在许多不同的网站上挖掘以找出我的问题,所以希望这会有助于其他人。

我使用py2exe来构建我的exe文件,但它没有工作,所以我决定尝试使用pyinstaller,是的,它有效。

只是要把项目中的东西更有条理:

Py2exe: 我刚开始使用py2exe,我得到的错误是这样的: python setup.py py2exe Invalid Syntax (asyncsupport.py, line 22)

我可以通过删除设置文件中的一些内容来修复它,它最终看起来像这样。

data_files = [('selenium/webdriver/chrome', ['C:\Python27\Lib\site-packages\selenium\webdriver\chrome\webdriver.py'])]

setup(
    name='General name of app',
    version='1.0',
    description='General description of app',
    author='author name',
    author_email='author email',
    url='',
    windows=[{'script': 'final_headless.py'}],   # the main py file
    data_files=data_files,
    options={
        'py2exe':
            {
                'skip_archive': True,
                'optimize': 2,
                'excludes': 'jinja2.asyncsupport',
                'dll_excludes': ["MSVCP90.dll","HID.DLL", "w9xpopen.exe"]
            }
    }
)

它可以运行py2exe但exe文件不起作用,然后我转移到pyinstaller。

Pyinstaller: 对我来说pyinstaller看起来比py2exe更容易,所以我从现在开始坚持这个。我们只是"问题"是没有路径中的webdriver,exe没有运行。 但是只要你在变量路径中拥有它就可以了。

结论,使用pyinstaller是我的解决方案+将webdriver添加到路径。