当前位置: 首页 > 面试题库 >

Selenium Webdriver Chromedriver在无头模式下启动时超时

彭畅
2023-03-14
问题内容

我正在使用Selenium Webdriver,Ruby 32位1.9.3,Chromedriver v2.9.248315,Chrome
38.0.2125.111 m和Jenkins 1.588的本地实例

Gems: cucumber (1.3.17),selenium-webdriver (2.43.0), watir-webdriver (0.6.11)(如果您认为有必要,可以提供所有其他文件的列表)

Windows 7 Professional 64位版本。

运行Jenkins作业时,该作业使用chromedriver启动Chrome,然后尝试与其进行交互,但出现超时错误。通过命令提示符窗口在桌面上执行相同操作时,它可以完美运行。运行相同的Jenkins作业,启动Firefox而不是Chrome,效果很好。

简单示例(C:\ test.rb):

require 'watir-webdriver'
require 'selenium-webdriver'
client = Selenium::WebDriver::Remote::Http::Default.new
$browser = Watir::Browser.new :chrome, :http_client => client
$browser.driver.manage.window.maximize
$browser.close

配置为运行Windows批处理命令的Jenkins作业:

cd \
ruby test.rb

运行作业时的输出:

Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\jobs\test chromedriver\workspace
[workspace] $ cmd /c call C:\Windows\TEMP\hudson3963234995624341455.bat

C:\Program Files (x86)\Jenkins\jobs\test chromedriver\workspace>cd \

C:\>ruby test.rb 
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill': Timeout::Error (Timeout::Error)
    from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
    from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
    from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2563:in `read_status_line'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2552:in `read_new'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1320:in `block in transport_request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1317:in `catch'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1317:in `transport_request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1294:in `request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1287:in `block in request'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:746:in `start'
    from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1285:in `request'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/http/default.rb:83:in `response_for'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/http/default.rb:39:in `request'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/bridge.rb:638:in `raw_execute'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/bridge.rb:616:in `execute'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/remote/bridge.rb:236:in `maximizeWindow'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.43.0/lib/selenium/webdriver/common/window.rb:98:in `maximize'
    from test.rb:5:in `<main>'

C:\>exit 1 
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

我尝试在Jenkins服务中启用“允许服务与桌面进行交互”,然后观察窗口(在更复杂的情况下),然后Chrome窗口打开,但是什么也不做。我最初遇到了“$browser.cookies.clear”问题,并且在注释掉该行之后,我现在在$browser.driver.manage.window.maximize行中也遇到了同样的问题

我正在运行复杂的黄瓜方案,而使用Chromedriver却没有问题。然后,我重建了PC,并安装了Jenkins,Ruby,Chromedriver(将它们都添加到PATH)并将旧作业复制到新的Jenkins安装中后,出现了上述问题。然后,我创建了上面的简单示例,对其进行了测试并创建了这篇文章。

如果有人对我如何使Chromedriver重新工作有任何想法,那就太好了。


问题答案:

在会话0中以系统用户身份运行时,Chrome38不起作用。通常是因为Chrome是由Windows服务(在您的情况下是作为服务运行的Jenkins)启动,因此会发生这种情况。这是一个已知的问题。请在此处和此处查看硒问题。

两种解决方案

  1. 将Chrome降级到38以下的版本。
  2. 下载并安装AlwaysUp并将其配置为以默认系统用户以外的用户身份运行Jenkins服务

AlwaysUp解决方案绝对可以使用,但许可费用较低,如果您不担心Chrome版本,可以将其降级。



 类似资料:
  • null 所以目前一切都在无头模式下工作。但是我需要在一个没有GUI的linux服务器上运行这个python脚本(因此需要headless模式)。出于某种原因,我所有无头运行的尝试都导致selenium web驱动程序在初始化时超时。 以下是回溯: 文件“C:\users\xuser\desktop\bomwebservice\backend\code\firefoxstarter.py”,第51

  • 问题内容: 我想尝试无头镀铬,但是遇到了这个问题,我无法以无头模式启动驱动程序。我正在关注google文档。我错过了什么吗?该代码执行陷在线路 这是我的代码: 问题答案: UPDATE Chrome版本60已经发布,因此您所需要做的就是通过Nuget下载Chromdriver和Selenium并使用此简单代码,一切都像个魅力。惊人。 日期 在正式发布Chrome 60之前,有一个解决方案。您可以下

  • 我试图通过取消standalone.conf文件中JAVA_OPTS行的注释,在调试模式下启动JBoss 7.x。我看到一个非常奇怪的行为,JBoss不启动,它退出了错误“JDWP传输dt_socket初始化失败,TRANSPORT_INIT(510)”绑定问题。有人看过这个问题吗?端口号是8787,当我使用netstat时,我看不到8787上有任何东西在运行。 有什么想法吗?

  • 当在Eclipse 2019-06和IntelliJ 2019.2的调试模式下运行sping-boot2.2.0时,试图通过IDE终止进程看起来像是杀死了进程(根据IDE),但是,java进程仍在运行(由ps-ef|grep java验证)。 在Eclipse中运行非调试模式时,进程可以终止,但Eclipse会显示一条消息,说明“terminate failed”。 我尝试过各种旧的post选项,

  • 我觉得我已经尝试了任何方法来让我的对话框填充屏幕的75%(宽度),当它开始的时候。它看起来总是很棒,但自从我升级到Android4.4后,我不能让我的对话框看起来“正常”,而是非常小。 null 这个问题快把我逼疯了...有什么建议吗?

  • 问题内容: 我有一个Ubuntu 13.10,并安装了Vagrant 1.5.4和VirtualBox 4.3.10r93012。我第一次在虚拟机上正确编写脚本时编写命令时会出现我的问题。但是在完成并再次编写命令后,就会出现问题: 有什么解决办法吗?谢谢。 问题答案: 我使用会增加时间。但是对我来说,这不是原因,尽管错误告诉您超时。 我使用vim打开了Vagrantfile,并添加了以下几行来打开