1

UPDATE:停止硒WebDriverwhen無限獲取使用代理

原因GET(URL)永不完時,我使用了代理什麼該網站的一些HTTPS的部分,(廣告網絡等)不喜歡代理。這就是爲什麼頁面從未真正完成加載(實際上它確實,它只是花了很長時間)

我使用Selenium Webdriver與Firefox,當我嘗試訪問某些無限期加載的網站(除非有某種用戶交互),我只是想阻止它們永久加載。我使用Webdriver的Java庫,但使用Jython編寫代碼(因此不包含';'或'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」)時,打印永遠不會到達。當網頁有問題時,我想讓瀏覽器說「好的,讓我們停下來」,然後拋出一個例外。 – Peter1807

+0

似乎設置代理會導致此問題。但它在某些網站上只是一個問題。我不知道我能否在這裏舉一個例子。 – Peter1807

回答

0

您可能需要等待30秒, HTML標籤,在要加載的頁面上。如果元素在30秒內未加載,請捕獲異常並繼續。

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