1

我有一个 python Selenium 测试,它使用 Firebug 和 Netexport 打开 firefox,登录到网页并等待重定向链中的最后一页加载。当我在 Windows 命令行上运行时,这个测试运行得非常好,但是当我尝试从任务计划程序运行它时,9/10 次它找不到 Firefox 配置文件。测试时不时地按预期工作。

我对任务计划程序的怪癖不是很熟悉,所以这种行为对我来说没有意义。

该任务没有隐藏,我现在将其设置为仅在登录时运行。它配置为在 VM 正在运行的 Windows Server 2012 上运行。

任何有关此问题的知识将不胜感激。以下是我认为相关的代码,但如果不够,请告诉我。

profile = webdriver.FirefoxProfile('path/to/default/profile')
# set up extensions/preferences
...
driver = webdriver.Firefox(firefox_profile=profile)
driver.get(<URL>)
# send_keys and other interactions
...

我也尝试过不指定配置文件位置并让 selenium 创建一个临时配置文件。结果相同。

错误信息:

当 Firefox 打开时,我得到

无法加载您的 Firefox 配置文件。它可能丢失或无法访问。

硒的例外是

WebDriverException:消息:无法加载配置文件。配置文件目录:%s

接下来是有关检查日志文件的内容(不存在)

4

1 回答 1

0

在源代码中进行了一些探索/更多调试之后,我找到了根本原因和解决方案。

  • 指定 Firefox 配置文件目录只会告诉 selenium 从哪里复制现有配置文件。它仍然会创建一个临时配置文件。
  • 临时配置文件在任务的运行目录中创建。在我的情况下,我是在脚本目录的命令行中运行脚本,但从 Server 2008 开始的任务计划程序默认从 C:\Windows\System32 运行脚本
  • 我在任务的Action中的“Start in”选项中指定了运行目录

我仍然觉得奇怪的是,虽然运行任务的用户是管理员,但似乎无法从 System32 读取配置文件(正如@SiKing 所怀疑的那样)。更改着陆位置解决了这个问题。

于 2015-12-17T23:04:43.983 回答