1

UPDATE :정지 무한 GET

GET (URL) 웹 사이트의 일부 HTTPS 부품 (광고 네트워크 등)을 좋아하지 않았다 어떤 것을 내가 프록시를 사용할 때 결코 완성되지 이유 대리. 왜 실제로 페이지가 실제로 로딩을 끝내지 않았는지를 확인하십시오. (사실 그것은 단지 오래 걸렸습니다.)

나는 Firefox와 함께 Selenium Webdriver를 사용하고, 어떤 종류의 사용자 상호 작용이없는 한 무기한로드되는 특정 웹 사이트에 액세스하려고 할 때), 나는 단지 그것들이 영원히 로딩되는 것을 막고 싶다. Webdriver의 Java 라이브러리를 사용하지만 자이 썬에서 코드를 작성합니다 (따라서 ';'또는 'new xxx').

나는
driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS) 
driver.manage().timeouts().setScriptTimeout(15, TimeUnit.SECONDS) 
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS) 
driver.get(...) 
driver.close() 

을 시도하지만, 얻을 때마다는 멈추지 않을 것입니다.

나는 프록시를 통해 브라우저 시작 DesiredCapabilities를 사용

proxyServer = '127.0.0.1:8080' 
proxy = Proxy() 
proxy.setHttpProxy(proxyServer) 
proxy.setSslProxy(proxyServer) 
capabilities = DesiredCapabilities() 
capabilities.setCapability(CapabilityType.PROXY, proxy) 
driver = FirefoxDriver(capabilities) 

내가 프록시를 설정하지

는 웹 사이트가 정상적으로 처리됩니다. 프록시를 사용할 때만 웹 사이트가 멈추고 get()을 끝내지 않습니다. 이것은 모든 사이트에서 아무런 문제가되지 않으며 일부 사이트에만이 문제가 있습니다.

어떤 이유 일 수 있습니까? 프록시 설정은 브라우저 나 셀레늄이 get()이 완료된 신호를 보내는 메시지를 차단하는 것 같습니다.

+0

끝나지 않습니까? 무엇처럼? 브라우저에서 실제로이 페이지를 열면로드가 끝나지 않습니까? 나는 이것을 웹 페이지의 버그라고 생각할 것이다. – pagep

+0

get (url)을 사용하고 예를 들어 간단한 인쇄 ("Hello World")를 수행하면 인쇄물이 인쇄되지 않습니다. 웹 페이지가 버그가있을 때 브라우저에 "ok this stop"라고 말하고 예외를 던지기를 원합니다. – Peter1807

+0

프록시를 설정하면이 문제가 발생하는 것으로 보입니다. 그것은 특정 웹 사이트에서 단 하나의 문제 일뿐입니다. 여기에 한 가지 예를들 수 있는지 모르겠습니다. – Peter1807

답변

0

요소에 대해 30 초를 기다릴 수 있습니다. 로드 할 페이지의 HTML 태그 요소가 30 초 동안로드되지 않으면 예외를 catch하고 계속 진행합니다.

try 
{ 
    new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By.tagName("html"))); 
} 
catch (TimeoutException e) 
{ 
    // do something when this exception is caught 
} 
+0

나는 그것을 할 것이나 get (url)은 끝내지 않을 것이다. 그러나, 나는 나의 문제가 무엇인지 알았다. 웹 사이트의 일부, 광고 및 클릭 호스팅 업체는 자신과 웹 사이트간에 직접적인 https 연결이없는 것을 좋아하지 않았습니다. 그래서 사이트가 실제로 프록시를 사용할 때로드를 완료하지 못하는 이유입니다. – Peter1807