簡體   English   中英

org.openqa.selenium.WebDriverException:java.io.IOException:使用GeckoDriver調用getCookies()時,連接上的流意外結束

[英]org.openqa.selenium.WebDriverException: java.io.IOException: unexpected end of stream on Connection while invoking getCookies() with GeckoDriver

我不斷收到這樣的錯誤

org.openqa.selenium.WebDriverException: java.io.IOException: unexpected end of stream on Connection{localhost:13080, proxy=DIRECT hostAddress=localhost/127.0.0.1:13080 cipherSuite=none protocol=http/1.1}

嘗試從Firefox讀取Cookie時。 使用chrome可以執行完全相同的操作,而不會出現問題。 使用的端口是非常隨機的,每當我開始新的測試時,我也會分配一個新的端口。 指定其他端口是否應該可以在此處執行某些操作? 產生它的代碼行是:

driver.manage().getCookies().forEach(cookie -> System.out.println(cookie.toString()));

我想知道這是否是firefox的初始化問題,設置一些值會使我擺脫它。 我要做的初始化就是這樣:

FirefoxOptions Foptions = new FirefoxOptions();
Foptions.setBinary("/home/user/firefox/firefox");
Foptions.setCapability("marionette", true);
driver =  new FirefoxDriver(Foptions);

沒有錯誤堆棧跟蹤就很難分析錯誤。 錯誤堆棧跟蹤本可以極大地幫助調試問題。

但是,此錯誤消息...

org.openqa.selenium.WebDriverException: java.io.IOException: unexpected end of stream on Connection{localhost:13080, proxy=DIRECT hostAddress=localhost/127.0.0.1:13080 cipherSuite=none protocol=http/1.1}

...暗示當您嘗試調用getCookies()時引發了java.io.IOException

您的主要問題可能是以下問題之一:

  • 原因A :顯然,當您調用driver.manage().getCookies()HTML DOM已加載,但仍在激活某些cookie的javaScript / Ajax調用中。
  • 解決方案促使 WebDriverWait使元素可單擊 ,如下所示:

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#btn_download"))).click() 
  • 原因B :根據java.io.IOException:android中Connection上流的意外結束,可能是服務器在解析請求時拋出錯誤並關閉。

  • 解決方案 :交叉檢查是否能夠訪問網頁中的元素,而不會與Cookie混合在一起。
  • 原因C :另一個原因可能是geckodriver / marionette正在使用的端口被其他一些應用程序/服務所使用
  • 解決方案 :釋放GeckoDriver / Marionette使用的端口

在硒3.12.0及更高版本上使用driver.manage()。getCookies()方法時,我遇到了同樣的問題,將硒版本降級為3.11.0,並且工作正常,此問題已在最新版本中引入。

暫無
暫無

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

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