TOX 找不到浏览器二进制文件



我遇到了一个奇怪的问题-我在本地机器(Windows 10(上使用Tox运行Selenium测试,除非我将所有env变量传递给它,否则它找不到浏览器二进制文件。所以当我这样做的时候它是有效的:

[testenv]
passenv = *

默认情况下,Tox应该通过Path,但正如我所看到的,Chrome(和其他浏览器(在安装时没有添加到Path中,至少我的机器在Path中没有这个。我发现这些都保存在注册表中(https://learn.microsoft.com/en-gb/windows/win32/shell/app-registration)但这应该如何正确工作呢?我无法手动找到哪个env变量具有所需的浏览器路径,所以我尝试使用"*"它奏效了。请告知这里的正确选项是什么(也许有一些隐藏的env变量?(,这样代码就可以在任何安装了所需浏览器的机器上运行。Tox文档似乎没有这些信息(

UPD:对于Chrome,我发现传递PROGRAMW6432-env变量可以解决这个问题。

UPD2:调试表明;x86";PROCESSOR_ARCHITEW6432 env变量和Firefox的体系结构直到我传递了PROCESSOR-ARCHITEW 6432 nv变量才与tox一起工作。因此,通过PROCESSOR_ARCHITEW6432PROGRAMW6432可以在我的机器上运行Chrome、FF和Edge浏览器的测试。

然而,它看起来仍然是一种变通方法,我想找出正确的处理方法(看起来(但我还不确定(tox无法访问我机器上的注册表。Selenium有逻辑在注册表中找到浏览器可执行路径,如果没有提供路径,但它仍然找不到。所以也许有一种方法可以允许在机器上查看注册表?

哇,我遇到了完全相同的错误!

这种情况只发生在tox环境中,因此复制这种情况很痛苦。事实证明,如果我手动设置环境变量PROGRAMW6432,那么一切都会正常工作。

修复方法如下:

import os
import sys
if sys.platform == "win32":
os.environ.update(
{
"PROGRAMW6432": "C:\Program Files",
}
)

相关内容

最新更新