【问题标题】:Springboot with Selenium带有硒的 Spring Boot
【发布时间】:2017-07-24 19:12:50
【问题描述】:

当我将 springboot 插件添加到我的 Selenium 应用程序时。 Selenium 停止工作。

这是我的最小示例代码:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Main {
    public static void  main(String[] args)
    {
        System.setProperty("webdriver.gecko.driver", "/home/rafal/geckodriver");
        WebDriver webDriver = new FirefoxDriver();
        webDriver.get("http://google.com");
    }
}

和毕业:

group 'testSeleniumasdf'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

apply plugin: 'java'
sourceCompatibility = 1.8

dependencies {
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.4.0'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

而且它有效...

但是当我将 springboot 添加到我的 gradle 时,就像这里:

group 'testSeleniumasdf'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.3.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'

sourceCompatibility = 1.8


repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.4.0'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

它不起作用。这是 45 秒超时。并记录:

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
amed-provider>
1500922321841   addons.manager  DEBUG   Registering shutdown blocker for <unnamed-provider>
1500922321841   addons.manager  DEBUG   Provider finished startup: <unnamed-provider>
1500922321902   DeferredSave.extensions.json    DEBUG   Write succeeded
1500922321902   addons.xpi-utils    DEBUG   XPI Database saved, setting schema version preference to 19
1500922321902   DeferredSave.extensions.json    DEBUG   Starting timer
1500922321919   addons.repository   DEBUG   No addons.json found.
1500922321919   DeferredSave.addons.json    DEBUG   Save changes
1500922321921   DeferredSave.addons.json    DEBUG   Starting timer
[PIPELIGHT:LIN:unknown] attached to process.
[PIPELIGHT:LIN:unknown] checking environment variable PIPELIGHT_SILVERLIGHT5_0_CONFIG.
[PIPELIGHT:LIN:unknown] searching for config file pipelight-silverlight5.0.
[PIPELIGHT:LIN:unknown] trying to load config file from '/home/rafal/.config/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] trying to load config file from '/etc/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] trying to load config file from '/usr/share/pipelight/configs/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] sandbox not found or not installed!
[PIPELIGHT:LIN:silverlight5.0] using wine prefix directory /home/rafal/.wine-pipelight.
[PIPELIGHT:LIN:silverlight5.0] checking plugin installation - this might take some time.
[install-dependency] wine-silverlight5.0-installer is already installed in '/home/rafal/.wine-pipelight'.
[install-dependency] wine-mpg2splt-installer is already installed in '/home/rafal/.wine-pipelight'.
fixme:winediag:start_process Wine Staging 1.9.7 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
wine: Nie znaleziono biblioteki DLL.
err:wineboot:ProcessRunKeys Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (1157)
[PIPELIGHT:WIN:silverlight5.0] embedded mode         is on.
[PIPELIGHT:WIN:silverlight5.0] windowless mode       is off.
[PIPELIGHT:WIN:silverlight5.0] linux windowless mode is off.
[PIPELIGHT:WIN:silverlight5.0] force SetWindow       is off.
[PIPELIGHT:WIN:silverlight5.0] window class hook     is on.
[PIPELIGHT:WIN:silverlight5.0] strict draw ordering  is off.
[PIPELIGHT:WIN:silverlight5.0] replaced API function CreateWindowExA.
[PIPELIGHT:WIN:silverlight5.0] replaced API function CreateWindowExW.
[PIPELIGHT:WIN:silverlight5.0] replaced API function TrackPopupMenuEx.
[PIPELIGHT:WIN:silverlight5.0] replaced API function TrackPopupMenu.
fixme:ntdll:EtwRegisterTraceGuidsW (0x7b8d1f07, 0x7b96f118, {aa087e0e-0b35-4e28-8f3a-440c3f51eef1}, 1, 0x68f628, (null), (null), 0x7b96f118): stub
fixme:ntdll:EtwRegisterTraceGuidsW   register trace class {aa087e0e-0b35-4e28-8f3a-440c3f51eef1}
[PIPELIGHT:WIN:silverlight5.0] init successful!
[PIPELIGHT:WIN:silverlight5.0] OpenGL Vendor: Intel Open Source Technology Center
[PIPELIGHT:WIN:silverlight5.0] OpenGL Renderer: Mesa DRI Intel(R) Haswell Mobile x86/MMX/SSE2
[PIPELIGHT:WIN:silverlight5.0] Your GPU is in the whitelist, hardware acceleration should work.
1500922322191   addons.manager  DEBUG   Starting provider: PreviousExperimentProvider
1500922322191   addons.manager  DEBUG   Registering shutdown blocker for PreviousExperimentProvider
1500922322192   addons.manager  DEBUG   Provider finished startup: PreviousExperimentProvider
1500922322196   DeferredSave.extensions.json    DEBUG   Starting write
1500922322196   DeferredSave.addons.json    DEBUG   Starting write
1500922322209   DeferredSave.extensions.json    DEBUG   Write succeeded
1500922322210   DeferredSave.addons.json    DEBUG   Write succeeded

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:113)
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:271)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:216)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:211)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:207)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
    at Main.main(Main.java:9)
Exception in thread "main" org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows: 
amed-provider>
1500922321841   addons.manager  DEBUG   Registering shutdown blocker for <unnamed-provider>
1500922321841   addons.manager  DEBUG   Provider finished startup: <unnamed-provider>
1500922321902   DeferredSave.extensions.json    DEBUG   Write succeeded
1500922321902   addons.xpi-utils    DEBUG   XPI Database saved, setting schema version preference to 19
1500922321902   DeferredSave.extensions.json    DEBUG   Starting timer
1500922321919   addons.repository   DEBUG   No addons.json found.
1500922321919   DeferredSave.addons.json    DEBUG   Save changes
1500922321921   DeferredSave.addons.json    DEBUG   Starting timer
[PIPELIGHT:LIN:unknown] attached to process.
[PIPELIGHT:LIN:unknown] checking environment variable PIPELIGHT_SILVERLIGHT5_0_CONFIG.
[PIPELIGHT:LIN:unknown] searching for config file pipelight-silverlight5.0.
[PIPELIGHT:LIN:unknown] trying to load config file from '/home/rafal/.config/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] trying to load config file from '/etc/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] trying to load config file from '/usr/share/pipelight/configs/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] sandbox not found or not installed!
[PIPELIGHT:LIN:silverlight5.0] using wine prefix directory /home/rafal/.wine-pipelight.
[PIPELIGHT:LIN:silverlight5.0] checking plugin installation - this might take some time.
[install-dependency] wine-silverlight5.0-installer is already installed in '/home/rafal/.wine-pipelight'.
[install-dependency] wine-mpg2splt-installer is already installed in '/home/rafal/.wine-pipelight'.
fixme:winediag:start_process Wine Staging 1.9.7 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
wine: Nie znaleziono biblioteki DLL.
err:wineboot:ProcessRunKeys Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (1157)
[PIPELIGHT:WIN:silverlight5.0] embedded mode         is on.
[PIPELIGHT:WIN:silverlight5.0] windowless mode       is off.
[PIPELIGHT:WIN:silverlight5.0] linux windowless mode is off.
[PIPELIGHT:WIN:silverlight5.0] force SetWindow       is off.
[PIPELIGHT:WIN:silverlight5.0] window class hook     is on.
[PIPELIGHT:WIN:silverlight5.0] strict draw ordering  is off.
[PIPELIGHT:WIN:silverlight5.0] replaced API function CreateWindowExA.
[PIPELIGHT:WIN:silverlight5.0] replaced API function CreateWindowExW.
[PIPELIGHT:WIN:silverlight5.0] replaced API function TrackPopupMenuEx.
[PIPELIGHT:WIN:silverlight5.0] replaced API function TrackPopupMenu.
fixme:ntdll:EtwRegisterTraceGuidsW (0x7b8d1f07, 0x7b96f118, {aa087e0e-0b35-4e28-8f3a-440c3f51eef1}, 1, 0x68f628, (null), (null), 0x7b96f118): stub
fixme:ntdll:EtwRegisterTraceGuidsW   register trace class {aa087e0e-0b35-4e28-8f3a-440c3f51eef1}
[PIPELIGHT:WIN:silverlight5.0] init successful!
[PIPELIGHT:WIN:silverlight5.0] OpenGL Vendor: Intel Open Source Technology Center
[PIPELIGHT:WIN:silverlight5.0] OpenGL Renderer: Mesa DRI Intel(R) Haswell Mobile x86/MMX/SSE2
[PIPELIGHT:WIN:silverlight5.0] Your GPU is in the whitelist, hardware acceleration should work.
1500922322191   addons.manager  DEBUG   Starting provider: PreviousExperimentProvider
1500922322191   addons.manager  DEBUG   Registering shutdown blocker for PreviousExperimentProvider
1500922322192   addons.manager  DEBUG   Provider finished startup: PreviousExperimentProvider
1500922322196   DeferredSave.extensions.json    DEBUG   Starting write
1500922322196   DeferredSave.addons.json    DEBUG   Starting write
1500922322209   DeferredSave.extensions.json    DEBUG   Write succeeded
1500922322210   DeferredSave.addons.json    DEBUG   Write succeeded

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed

Build info: version: '2.53.1', revision: 'a36b8b1cd5757287168e54b817830adce9b0158d', time: '2016-06-30 19:26:09'
System info: host: 'rafal-Lenovo-G510', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.2.0-36-generic', java.version: '1.8.0_77'
Driver info: driver.version: FirefoxDriver
    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:125)
    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:271)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:119)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:216)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:211)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:207)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
    at Main.main(Main.java:9)
Caused by: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
amed-provider>
1500922321841   addons.manager  DEBUG   Registering shutdown blocker for <unnamed-provider>
1500922321841   addons.manager  DEBUG   Provider finished startup: <unnamed-provider>
1500922321902   DeferredSave.extensions.json    DEBUG   Write succeeded
1500922321902   addons.xpi-utils    DEBUG   XPI Database saved, setting schema version preference to 19
1500922321902   DeferredSave.extensions.json    DEBUG   Starting timer
1500922321919   addons.repository   DEBUG   No addons.json found.
1500922321919   DeferredSave.addons.json    DEBUG   Save changes
1500922321921   DeferredSave.addons.json    DEBUG   Starting timer
[PIPELIGHT:LIN:unknown] attached to process.
[PIPELIGHT:LIN:unknown] checking environment variable PIPELIGHT_SILVERLIGHT5_0_CONFIG.
[PIPELIGHT:LIN:unknown] searching for config file pipelight-silverlight5.0.
[PIPELIGHT:LIN:unknown] trying to load config file from '/home/rafal/.config/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] trying to load config file from '/etc/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] trying to load config file from '/usr/share/pipelight/configs/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] sandbox not found or not installed!
[PIPELIGHT:LIN:silverlight5.0] using wine prefix directory /home/rafal/.wine-pipelight.
[PIPELIGHT:LIN:silverlight5.0] checking plugin installation - this might take some time.
[install-dependency] wine-silverlight5.0-installer is already installed in '/home/rafal/.wine-pipelight'.
[install-dependency] wine-mpg2splt-installer is already installed in '/home/rafal/.wine-pipelight'.
fixme:winediag:start_process Wine Staging 1.9.7 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
wine: Nie znaleziono biblioteki DLL.
err:wineboot:ProcessRunKeys Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (1157)
[PIPELIGHT:WIN:silverlight5.0] embedded mode         is on.
[PIPELIGHT:WIN:silverlight5.0] windowless mode       is off.
[PIPELIGHT:WIN:silverlight5.0] linux windowless mode is off.
[PIPELIGHT:WIN:silverlight5.0] force SetWindow       is off.
[PIPELIGHT:WIN:silverlight5.0] window class hook     is on.
[PIPELIGHT:WIN:silverlight5.0] strict draw ordering  is off.
[PIPELIGHT:WIN:silverlight5.0] replaced API function CreateWindowExA.
[PIPELIGHT:WIN:silverlight5.0] replaced API function CreateWindowExW.
[PIPELIGHT:WIN:silverlight5.0] replaced API function TrackPopupMenuEx.
[PIPELIGHT:WIN:silverlight5.0] replaced API function TrackPopupMenu.
fixme:ntdll:EtwRegisterTraceGuidsW (0x7b8d1f07, 0x7b96f118, {aa087e0e-0b35-4e28-8f3a-440c3f51eef1}, 1, 0x68f628, (null), (null), 0x7b96f118): stub
fixme:ntdll:EtwRegisterTraceGuidsW   register trace class {aa087e0e-0b35-4e28-8f3a-440c3f51eef1}
[PIPELIGHT:WIN:silverlight5.0] init successful!
[PIPELIGHT:WIN:silverlight5.0] OpenGL Vendor: Intel Open Source Technology Center
[PIPELIGHT:WIN:silverlight5.0] OpenGL Renderer: Mesa DRI Intel(R) Haswell Mobile x86/MMX/SSE2
[PIPELIGHT:WIN:silverlight5.0] Your GPU is in the whitelist, hardware acceleration should work.
1500922322191   addons.manager  DEBUG   Starting provider: PreviousExperimentProvider
1500922322191   addons.manager  DEBUG   Registering shutdown blocker for PreviousExperimentProvider
1500922322192   addons.manager  DEBUG   Provider finished startup: PreviousExperimentProvider
1500922322196   DeferredSave.extensions.json    DEBUG   Starting write
1500922322196   DeferredSave.addons.json    DEBUG   Starting write
1500922322209   DeferredSave.extensions.json    DEBUG   Write succeeded
1500922322210   DeferredSave.addons.json    DEBUG   Write succeeded

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed

(/usr/lib/firefox/firefox:22291): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed

    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:113)
    ... 7 more

似乎 spring boot 以其他方式管理 selenium。也许有人知道如何用 springboot 运行这个代码示例。请帮忙。

【问题讨论】:

  • 您是否安装了 firefox,是否可以从命令行使用?
  • 是的。正如我在没有弹簧启动依赖的情况下写的那样,一切正常。

标签: java selenium spring-boot


【解决方案1】:

不确定您使用 springboot 的目的是什么,因为您的代码没有使用它,但它的价值 Springboot 具有与典型不同的主类。

尝试像这样改变你的主要:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Main implements CommandLineRunner {
    public static void  main(String[] args)
    {
        SpringApplication.run(Main.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.setProperty("webdriver.gecko.driver", "/home/rafal/geckodriver");
        WebDriver webDriver = new FirefoxDriver();
        webDriver.get("http://google.com");
    }
}

SpringApplication.run 方法将启动一个 tomcat 服务器并执行一些其他的magic 操作,这将使 Spring 高兴,run method 利用 Spring 框架在 Spring 初始化之后但在 SpringApplication 之前立即执行逻辑。 run 方法已完成。

【讨论】:

  • 感谢您的回答。我知道我没有正确地启动应用程序。但我注意到仅使用 springboot 插件就足以出错。我使用了您的代码示例,但出现了同样的问题。
【解决方案2】:

我必须明确定义所有 selenium 依赖项,而不仅仅是 selenium-java。使用这些其他 selenium 依赖项更新您的 gradle 依赖项。

compile "org.seleniumhq.selenium:selenium-server:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-java:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-leg-rc:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-api:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-chrome-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-edge-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-firefox-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-ie-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-opera-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-remote-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-safari-driver:${seleniumVersion}"
compile "org.seleniumhq.selenium:selenium-support:${seleniumVersion}"

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 2016-11-12
    • 2016-04-02
    • 2017-10-07
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多