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