簡體   English   中英

在 Linux 服務器上運行 Selenium WebDriver 測試

[英]Run Selenium WebDriver test on a linux server

我正在嘗試在帶有 chrome 的 Linux 服務器上運行使用 selenium webdriver 實現的測試,但沒有顯示我的 java 代碼

        System.setProperty("webdriver.chrome.driver","/home/exploit/Bureau/chromedriver");
        WebDriver driver = new ChromeDriver();  
        driver.get("https://www.google.com");
        WebElement element = driver .findElement(By.id("lst-ib"));

運行這個程序 (jar) a 用命令啟動 Xvfb

Xvfb :1 -screen 5 1024x768x8 &
export DISPLAY=:1.5

當我運行程序時,經過漫長的等待,我得到了這個異常

12:39:53.483 [Forwarding newSession on session null to remote] DEBUG           o.a.h.i.conn.DefaultClientConnection - Connection 0.0.0.0:51411<->127.0.0.1:9069 closed
12:39:53.483 [Forwarding newSession on session null to remote] DEBUG o.a.h.i.conn.tsccm.ConnPoolByRoute - Notifying no-one, there are no waiting threads
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.9.248304,platform=Linux 3.10.0-123.13.2.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information)
  Command duration or timeout: 60.69 seconds
  Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
  System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-    123.13.2.el7.x86_64', java.version: '1.7.0_79'
  Driver info: driver.version: ChromeDriver
  Session ID: 6c811fab5c809544094e1f9e1d96ef6a
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:531)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:215)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:114)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:107)
    at com.atos.esope.Extractor.extTest(Extractor.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:201)
    at com.sun.proxy.$Proxy27.extTest(Unknown Source)
    at com.atos.esope.Program.main(Program.java:32)

當我嘗試單獨運行 chrome 時遇到了這個問題

Xlib:  extension "RANDR" missing on display ":1.5".
Xlib:  extension "RANDR" missing on display ":1.5".
Xlib:  extension "RANDR" missing on display ":1.5".
Xlib:  extension "RANDR" missing on display ":1.5".
Xlib:  extension "RANDR" missing on display ":1.5".
Xlib:  extension "RANDR" missing on display ":1.5".
Xlib:  extension "RANDR" missing on display ":1.5".
[3207:3207:0505/171255:ERROR:url_pattern_set.cc(240)] Invalid url pattern:         chrome://print/*
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.
libGL error: failed to load driver: swrast
libGL error: Try again with LIBGL_DEBUG=verbose for more details.

問題是:

是在定位驅動程序還是在 chrome 中出現問題,或者我需要一些額外的配置?

我已經用 Firefox 試過了。你需要引導 Firefox 以便它在 Xvfb 中執行。

您可以嘗試以下操作:

String Xport = System.getProperty("lmportal.xvfb.id", ":1");

final File firefoxPath = new File(System.getProperty("lmportal.deploy.firefox.path", "/usr/bin/firefox"));

FirefoxBinary firefoxBinary = new FirefoxBinary(firefoxPath);

firefoxBinary.setEnvironmentProperty("DISPLAY", Xport);

這里錯誤日志Chrome failed to start: exited abnormally清楚地表明系統無法啟動 chromedriver 但它能夠找到它。 當您嘗試使用 jenkins 在 linux 服務器上運行時,只需嘗試在 jenkins 上下載並啟用插件 XVFB 並使用此代碼塊。 希望這可以幫助!

            if(service == null){
                service = new ChromeDriverService.Builder()
                        .usingDriverExecutable(new File("/usr/bin/chromedriver"))// set the chromedriver path
                       .usingAnyFreePort()
                        .withEnvironment(ImmutableMap.of("DISPLAY", ":15"))
                        .withSilent(true)
                        .build();
                service.start();
            }

            System.out.println("Reading chrome driver");
            System.setProperty("webdriver.chrome.driver","/usr/bin/chromedriver");
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("--headless");
            WebDriver driver = new ChromeDriver(chromeOptions);
            driver.get("https://google.com");
            driver.quit();
 }
        catch(Exception ex){
        System.out.println(ex.getMessage());
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM