From 9aa664219b85709000b06994bd04f4b8b74840d1 Mon Sep 17 00:00:00 2001 From: Steven Hazel Date: Wed, 28 Mar 2018 18:33:58 -0700 Subject: [PATCH] Add User Agent for Python (#5696) --- py/selenium/webdriver/remote/remote_connection.py | 8 +++++++- .../selenium/webdriver/remote/test_remote_connection.py | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/py/selenium/webdriver/remote/remote_connection.py b/py/selenium/webdriver/remote/remote_connection.py index 3d22e27c1ecce..b73c8360b0d3d 100644 --- a/py/selenium/webdriver/remote/remote_connection.py +++ b/py/selenium/webdriver/remote/remote_connection.py @@ -19,6 +19,7 @@ import socket import string import base64 +import platform try: import http.client as httplib @@ -30,6 +31,7 @@ import urlparse as parse from selenium.webdriver.common import utils as common_utils +from selenium import __version__ from .command import Command from .errorhandler import ErrorCode from . import utils @@ -172,10 +174,14 @@ def get_remote_connection_headers(cls, parsed_url, keep_alive=False): - keep_alive (Boolean) - Is this a keep-alive connection (default: False) """ + system = platform.system().lower() + if system == "darwin": + system = "mac" + headers = { 'Accept': 'application/json', 'Content-Type': 'application/json;charset=UTF-8', - 'User-Agent': 'Python http auth' + 'User-Agent': 'selenium/{} (python {})'.format(__version__, system) } if parsed_url.username: diff --git a/py/test/unit/selenium/webdriver/remote/test_remote_connection.py b/py/test/unit/selenium/webdriver/remote/test_remote_connection.py index a4ab1d41d93b9..05f563722c499 100644 --- a/py/test/unit/selenium/webdriver/remote/test_remote_connection.py +++ b/py/test/unit/selenium/webdriver/remote/test_remote_connection.py @@ -21,6 +21,7 @@ except ImportError: # above is available in py3+, below is py2.7 import urlparse as parse +from selenium import __version__ from selenium.webdriver.remote.remote_connection import ( RemoteConnection, ) @@ -33,7 +34,8 @@ def test_get_remote_connection_headers_defaults(): assert 'Connection' not in headers.keys() assert headers.get('Accept') == 'application/json' assert headers.get('Content-Type') == 'application/json;charset=UTF-8' - assert headers.get('User-Agent') == 'Python http auth' + assert headers.get('User-Agent').startswith("selenium/%s (python " % __version__) + assert headers.get('User-Agent').split(' ')[-1] in {'windows)', 'mac)', 'linux)'} def test_get_remote_connection_headers_adds_auth_header_if_pass():