ConnectionAbortedError:[WinError 10053]使用GeckoDriver和Firefox的主机中的软件中止了已建立的连接

时间:2018-08-16 09:19:17

标签: python selenium firefox webdriver geckodriver

我正在使用以下python脚本登录到Fedex跟踪服务

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from time import sleep
driver = webdriver.Firefox()
driver.get("https://www.fedex.com/apps/fedextracking/?cntry_code=us&locale=us_en#")
sleep(5)
users = driver.find_element_by_xpath("//div[@class='fxg-field'][1]/input[@class='fxg-field__input-text']")
users.send_keys('test')
passwords = driver.find_element_by_xpath("//input[@id='pswd-input']")
passwords.send_keys('test')
sleep(3)
submit = driver.find_element_by_xpath("//button[@id='login']")
submit.click()

它没有显示确切的错误,但是显示了这些错误:

File "test.py", line 10, in <module>
users = driver.find_element_by_xpath("//div[@class='fxg-field'][1]/input[@class='fxg-field__input-text']")
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 393, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 966, in find_element 'value': value})['value']
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 318, in execute
response = self.command_executor.execute(driver_command, params)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 472, in execute
return self._request(command_info[0], url, body=data)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\site-packages\selenium\webdriver\remote\remote_connection.py", line 495, in _request
self._conn.request(method, parsed_url.path, body, headers)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\http\client.py", line 1083, in request
self._send_request(method, url, body, headers)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\http\client.py", line 1128, in _send_request
self.endheaders(body)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\http\client.py", line 1079, in endheaders
self._send_output(message_body)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\http\client.py", line 913, in _send_output
self.send(message_body)
File "C:\Users\Home\AppData\Local\Programs\Python\Python35\lib\http\client.py", line 885, in send
self.sock.sendall(data)
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine

它在Google Chrome浏览器上可以正常运行,但不能在Firefox上运行。请帮助我解决此问题。

编辑

Firefox版本57.0.4 (64-bit)

硒版本3.13.0

壁虎驱动程序0.21.0

更新

问题仅在于此网站。我尝试了其他跟踪站点,它们都使用Firefox。该特定站点不适用于Firefox。

3 个答案:

答案 0 :(得分:1)

您的代码块接近完美。我采用了自己的代码并进行了一些调整,其中包括在 USER ID 字段上调用send_keys()之前,诱导 WebDriverWait ,如下所示:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://www.fedex.com/apps/fedextracking/?cntry_code=us&amp;locale=us_en#")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='fxg-field__input-text' and @name='USER']"))).send_keys('test')
    driver.find_element_by_xpath("//input[@class='fxg-field__input-text' and @name='PASSWORD']").send_keys('test')
    driver.find_element_by_xpath("//button[@class='fxg-button fxg-button--orange' and @name='login']/span").click()
    
  • 浏览器快照:

    • USER IDPASSWORD字段已填写:

fedex_1

  • 由于凭据错误而导致的错误:

fedex_2

答案 1 :(得分:0)

这可能与您使用的Firefox版本有关。检查硒支持哪些Firefox浏览器版本。 https://www.seleniumhq.org/about/platforms.jsp

  

对Firefox的支持是最新版本,以前的版本,   最新的ESR版本和以前的ESR版本。

     

例如Selenium 2.40.0(于2014年2月19日发布)支持   Firefox 27、26、24、17

     

带有Firefox的硒可以在Firefox支持的任何平台上运行   对于这些版本,还允许用户安装自定义Firefox   扩展名。

答案 2 :(得分:0)

开始使用

driver.find_element_by_xpath("//div[@class='fxg-field'][1]/input[@class='fxg-field__input-text']") 

尝试

driver.find_element_by_xpath(//input[@name="USER"])