For some reason I get the following error only when I open up a nested webdriver
instance. No idea what is happening here.
I am using Windows 10, geckodriver 0.21.0, and Python 3.7.
ConnectionAbortedError: [WinError 10053]
An established connection was aborted by the software in your host machine
Part of Script That Is Working Fine
tab_backers = ff.find_element_by_xpath('//a[@gogo-test="backers_tab"]')
try:
funding_backers_count = int(''.join(filter(str.isdigit, str(tab_backers.text))))
except ValueError:
funding_backers_count = 0
if funding_backers_count > 0:
tab_backers.click()
see_more_backers = WebDriverWait(ff, 10).until(
EC.element_to_be_clickable((By.XPATH, '//ui-view//a[text()="See More Backers"]'))
)
clicks = 0
while clicks < 0:
clicks += 1
ff.WebDriverWait(ff, 5).until(
see_more_backers.click()
)
for container in ff.find_elements_by_xpath('//ui-view//div[@class="campaignBackers-pledge ng-scope"]'):
backers_profile = container.find_elements_by_xpath('./*/div[@class="campaignBackers-pledge-backer-details"]/a')
if len(backers_profile) > 0:
backers_profile = backers_profile[0].get_attribute('href')
else:
backers_profile = 'Unknown'
backers_name = safe_encode(container.find_element_by_xpath('(./*/div[@class="campaignBackers-pledge-backer-details"]/*)[1]').text)
backers_timestamp = container.find_element_by_xpath('./*/div[@class="campaignBackers-pledge-backer-details"]/div[contains(@class, "campaignBackers-pledge-backer-details-note")]').text
backers_contribution = container.find_element_by_xpath('./*//*[contains(@class, "campaignBackers-pledge-amount-bold")]').text
if backers_contribution != 'Private':
backers_contribution = int(''.join(filter(str.isdigit, str(backers_contribution))))
if backers_profile != 'Unknown':
Part of Script Causing System to Abort Connection
_ff = create_webdriver_instance()
_ff.get(backers_profile)
_ff.quit()
Traceback
Traceback (most recent call last):
File "C:\Users\Anthony\Desktop\test.py", line 271, in <module>
backers_profile = container.find_elements_by_xpath('./*/div[@class="campaignBackers-pledge-backer-details"]/a')
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 381, in find_elements_by_xpath
return self.find_elements(by=By.XPATH, value=xpath)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 680, in find_elements
{"using": by, "value": value})['value']
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 628, in _execute
return self._parent.execute(command, params)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 318, in execute
response = self.command_executor.execute(driver_command, params)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\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\Anthony\AppData\Local\Programs\Python\Python37\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\Anthony\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1229, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1275, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1224, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1055, in _send_output
self.send(chunk)
File "C:\Users\Anthony\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 977, in send
self.sock.sendall(data)
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
geckodriver.log
Here it is in a codepen, since it is wayyy too long!
create_webdriver_instance Function
def create_webdriver_instance():
options = Options()
options.add_argument('-headless')
try:
ua_string = random.choice(ua_strings)
profile = webdriver.FirefoxProfile()
profile.set_preference('general.useragent.override', ua_string)
return webdriver.Firefox(profile) # profile, firefox_options=options
except IndexError as error:
print('\nSection: Function to Create Instances of WebDriver\nCulprit: random.choice(ua_strings)\nIndexError: {}\n'.format(error))
return webdriver.Firefox() # firefox_options=options
Does anybody have any idea whatsoever what might be causing the connection to abort?
Answers. Moty is right, in most of the cases this exception indicates something on your machine is blocking your connection. Try running it with firewall/antivirus disabled.
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine.
This error message...
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
...implies that the initialization of a new WebBrowsing Session i.e. Firefox Browser session was aborted.
As per your code attempt the error is clearly coming out create_webdriver_instance()
function which contains:
try:
ua_string = random.choice(ua_strings)
profile = webdriver.FirefoxProfile()
profile.set_preference('general.useragent.override', ua_string)
return webdriver.Firefox(profile)
And:
except IndexError as error:
print('\nSection: Function to Create Instances of WebDriver\nCulprit: random.choice(ua_strings)\nIndexError: {}\n'.format(error))
return webdriver.Firefox()
So it is not exactly clear from which function you are facing this issue among return webdriver.Firefox(profile)
or webdriver.Firefox()
.
Perhaps a closer look at the logs within codepen suggests the error is coming out from webdriver.Firefox(profile)
.
There can be multiple reason behind this error:
The initial step would be find out if any software is blocking the connection to/from the server in your computer. Apart from that the probable solutions are:
Ensure that /etc/hosts on your system contains the following entry:
127.0.0.1 localhost.localdomain localhost
As per Connection was aborted by the software in your host machine you need to allow localhost routes like http://localhost:8080/reactive-commands
As per Keep-Alive connection to geckodriver 0.21.0 dropped after 5s of inactivity without re-connection using Selenium Python client
AutomatedTester: This issue is not because we are not connected at the time of doing a request. If that was the issue we would be getting a httplib.HTTPConnection exception being thrown. Instead a BadStatusLine is thrown when we do a connection and close it and try parse the response. Now this could be the python stdlib bug, httplib bug or selenium bug. A Python client to replace urllib with something else that does not exhibit the same defect with Keep-Alive connections is WIP.
andreastt: The geckodriver team is working on extending the server-side timeout value to something more reasonable. As I said, this would help mitigate this issue but not fundamentally fix it. In any case it is true that five seconds is probably too low to get real benefit from persistent HTTP connections, and that increasing it to something like 60 seconds would have greater performance.
Selenium 3.14.0
has just been released. If you are affected by this issue please upgrade accordingly.
References:
As documentation says:
Software caused connection abort. An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error.
Possible reasons:
and etc.
Also try to downgrade geckodriver 0.21.0
to geckodriver 0.20.1
. You can download it here. It seems to be a problem with geckodriver 0.21.0
https://stackoverflow.com/a/51236719/8625512
PS:
options.add_argument('-headless')
should be:
options.add_argument('--headless')
This problem happened to me and as the error was intermittent, I initially believed that it was some firewall or antivirus problem, but it was much simpler.
I had a form that was being submitted twice when the SEND button was clicked. The button was set to type="submit" and a javascript code submitted this form when this button was clicked. I changed the button to type="button" and the problem was solved.
Another reason:
When a page served by python is loading, user may cancel the loading before transmission is complete, by pressing Esc or by clicking 'X'(Stop loading this page button). This is usually done when the server is slow.
E.g. if user navigates to your page and Press Esc before the image is fully loaded, this error will occur. In that case, you have to Handle it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With