【问题标题】:Selenium Test Runs on Command Line but Not Through Task SchedulerSelenium 测试在命令行上运行,但不是通过任务计划程序
【发布时间】:2016-03-24 11:05:33
【问题描述】:

我有一个 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 打开时,我得到 ​​p>

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

硒的例外是

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

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

【问题讨论】:

  • 这个path/to/default/profile是真正相关的东西!那个位置存在吗?无论用户附加到计划任务,他都有权访问此位置吗?
  • @SiKing 该位置确实存在,我尝试指定路径并让 Selenium 创建一个临时配置文件。两种方式都在命令行上工作,并且都在任务调度程序中存在相同的问题。在调度器中运行任务的用户和我在命令行运行时的用户是一样的。
  • 你是如何指定路径的?全局还是相对?
  • @SiKing 绝对路径。但就像我说的,Selenium 临时配置文件(未指定任何路径)也不起作用。
  • 是否存在与“不起作用”相关的错误?

标签: python selenium selenium-webdriver windows-server-2012 taskscheduler


【解决方案1】:

在对源代码进行了一番摸索/又进行了一些调试之后,我找到了根本原因和解决方案。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2017-06-07
    • 2017-11-21
    • 2020-05-19
    • 2014-09-15
    • 2016-08-03
    • 2015-08-08
    相关资源
    最近更新 更多