2017-11-10 2 views
0

Selenium 프로젝트에서 BrowserMob 프록시가 작동하지 않습니다. described in BrowserMob Proxy github page처럼 내 코드에서 수입 : 서버가 (원래는 할 수 없었다) 시작할 수 있도록BrowserMob Proxy 및 Selenium 관련 문제

public class DriverBase { 
    public WebDriver driver; 
public BrowserMobProxy proxy; 

    @Before 
    public void setUp() { 
    proxy = new BrowserMobProxyServer(); 
     proxy.start(0); 

    Proxy sproxy = ClientUtil.createSeleniumProxy(proxy); 

     DesiredCapabilities caps=new DesiredCapabilities(); 
     caps.setCapability(CapabilityType.PROXY, sproxy); 
driver = new ChromeDriver(caps); 

내가, browsermob 코어에서 SLF4J의 이적 의존성 및 추가 SLF4J-jdk14를 제외.

<dependency> 
     <groupId>net.lightbody.bmp</groupId> 
     <artifactId>browsermob-core</artifactId> 
     <version>2.1.5</version> 
     <scope>test</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>org.seleniumhq.selenium</groupId> 
       <artifactId>selenium</artifactId> 
       </exclusion> 
        <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>jcl-over-slf4j</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.google.guava</groupId> 
       <artifactId>guava</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-jdk14</artifactId> 
     <version>1.8.0-beta0</version> 
    </dependency> 

또한 서버가 최신 구아바 버전으로 시작하지 않기 때문에 수동으로 com.google.guava 19.0을 추가했습니다. 내 테스트 클래스에서

<dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>19.0</version> 
    </dependency> 

나는 단지 브라우저 시작 :

public class TrafficTest extends DriverBase{ 

@Test 
public void testTraffic() {  
    driver.navigate().to("http://liveexpert.ru"); 
} 

브라우저가 시작을하지만, 사이트를 열거 나 인터넷에 액세스 할 수 없습니다. 원래의 browsermob-core maven 설정은 서버 나 브라우저를 시작할 수 없었습니다. 여기

java.lang.NoSuchMethodError: com.google.common.net.HostAndPort.getHost()Ljava/lang/String; 

전체 로그

Nov 10, 2017 2:50:17 PM org.littleshoot.proxy.impl.DefaultHttpProxyServer start 
    INFO: Starting proxy at address: 0.0.0.0/0.0.0.0:0 
    Nov 10, 2017 2:50:17 PM org.littleshoot.proxy.impl.DefaultHttpProxyServer doStart 
    INFO: Proxy listening with TCP transport 
    Nov 10, 2017 2:50:17 PM org.littleshoot.proxy.impl.DefaultHttpProxyServer doStart 
    INFO: Proxy started at address: /0:0:0:0:0:0:0:0:45981 
    Starting ChromeDriver 2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4) on port 10442 
    Only local connections are allowed. 
    Nov 10, 2017 2:50:18 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
    INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end 
    Nov 10, 2017 2:50:19 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
    INFO: Detected dialect: OSS 
    Nov 10, 2017 2:50:19 PM org.littleshoot.proxy.impl.ClientToProxyConnection exceptionCaught 
    SEVERE: (AWAITING_INITIAL) [id: 0x62631078, L:/127.0.1.1:45981 - R:/127.0.0.1:33244]: Caught an exception on ClientToProxyConnection 
    java.lang.NoSuchMethodError: com.google.common.net.HostAndPort.getHost()Ljava/lang/String; 

는 설정에 대한 해결 방법은 인터넷에 액세스 할 수있는 드라이버가 있습니다 : 현재 설정에서 오류가 발생합니다?

답변

1

이제 해결책은 guava 22.0입니다. 구아바의

버전 (18, 19)은 문제가 발생할 :

java.lang.NoSuchMethodError: com.google.common.net.HostAndPort.getHost() 

explained here입니다.

java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter.<init>(Ljava/util/concurrent/ExecutorService;)V from class org.openqa.selenium.net.UrlChecker 
:

구아바 23.x의 최신 버전은 차례로, 또 다른 문제를 호출 문제를 제거하지만, 도착

관련 문제