Hello community,

here is the log from the commit of package python-selenium for openSUSE:Factory 
checked in at 2018-08-04 21:54:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-selenium (Old)
 and      /work/SRC/openSUSE:Factory/.python-selenium.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-selenium"

Sat Aug  4 21:54:36 2018 rev:9 rq:627327 version:3.14.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-selenium/python-selenium.changes  
2018-07-02 23:33:33.405241381 +0200
+++ /work/SRC/openSUSE:Factory/.python-selenium.new/python-selenium.changes     
2018-08-04 21:54:41.169421501 +0200
@@ -1,0 +2,11 @@
+Fri Aug  3 11:55:47 UTC 2018 - tchva...@suse.com
+
+- Run the tests, taken from upstream git and issue filled upstream
+
+-------------------------------------------------------------------
+Fri Aug  3 08:44:01 UTC 2018 - idon...@suse.com
+
+- Update to version 3.14.0
+  * [py] Fix doc of URL-related ExpectedCondition (#6236) 
+
+-------------------------------------------------------------------

Old:
----
  selenium-3.13.0.tar.gz

New:
----
  selenium-3.14.0.tar.gz
  selenium-pytest.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-selenium.spec ++++++
--- /var/tmp/diff_new_pack.cRDGKw/_old  2018-08-04 21:54:41.653422407 +0200
+++ /var/tmp/diff_new_pack.cRDGKw/_new  2018-08-04 21:54:41.653422407 +0200
@@ -18,19 +18,24 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-selenium
-Version:        3.13.0
+Version:        3.14.0
 Release:        0
 Summary:        Python bindings for Selenium
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://github.com/SeleniumHQ/selenium
 Source:         
https://files.pythonhosted.org/packages/source/s/selenium/selenium-%{version}.tar.gz
-BuildRequires:  %{python_module devel}
+#https://github.com/SeleniumHQ/selenium/issues/6246
+Source1:        selenium-pytest.tar.bz2
+BuildRequires:  %{python_module pytest-mock}
+BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module rdflib}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  %{python_module urllib3}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-rdflib
+Requires:       python-urllib3
 ExclusiveArch:  %{ix86} x86_64
 %python_subpackages
 
@@ -42,7 +47,7 @@
 supported, as well as the Selenium 1.0 bindings.
 
 %prep
-%setup -q -n selenium-%{version}
+%setup -q -n selenium-%{version} -a1
 
 %build
 %python_build
@@ -55,6 +60,10 @@
 %python_expand rm 
%{buildroot}%{$python_sitelib}/selenium/webdriver/firefox/amd64/x_ignore_nofocus.so
 %endif
 
+%check
+export PYTHONDONTWRITEBYTECODE=1
+%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} 
py.test-%{$python_version} test/unit
+
 %files %{python_files}
 %doc README.rst CHANGES
 %{python_sitelib}/selenium*

++++++ selenium-3.13.0.tar.gz -> selenium-3.14.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/CHANGES new/selenium-3.14.0/CHANGES
--- old/selenium-3.13.0/CHANGES 2018-06-25 16:37:37.000000000 +0200
+++ new/selenium-3.14.0/CHANGES 2018-08-02 15:06:22.000000000 +0200
@@ -1,3 +1,10 @@
+Selenium 3.14.0
+* Fix doc of URL-related ExpectedCondition (#6236)
+* Added ExpectedCondition invisibility_of_element
+* Swap out httplib for urllib3
+* Be consistent with webdriver init kwarg service_log_path (#5725)
+
+
 Selenium 3.13.0
 
 * Add executing Chrome devtools command (#5989)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/PKG-INFO new/selenium-3.14.0/PKG-INFO
--- old/selenium-3.13.0/PKG-INFO        2018-06-25 21:49:40.000000000 +0200
+++ new/selenium-3.14.0/PKG-INFO        2018-08-02 15:22:42.000000000 +0200
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: selenium
-Version: 3.13.0
+Version: 3.14.0
 Summary: Python bindings for Selenium
 Home-page: https://github.com/SeleniumHQ/selenium/
-Author: UNKNOWN
-Author-email: UNKNOWN
+Maintainer: david.burns
+Maintainer-email: david.bu...@theautomatedtester.co.uk
 License: Apache 2.0
-Description-Content-Type: UNKNOWN
 Description: ======================
         Selenium Client Driver
         ======================
@@ -44,7 +43,7 @@
         
             pip install -U selenium
         
-        Alternately, you can download the source distribution from `PyPI 
<https://pypi.org/project/selenium/#files>`_ (e.g. selenium-3.13.0.tar.gz), 
unarchive it, and run::
+        Alternately, you can download the source distribution from `PyPI 
<https://pypi.org/project/selenium/#files>`_ (e.g. selenium-3.14.0.tar.gz), 
unarchive it, and run::
         
             python setup.py install
         
@@ -109,7 +108,7 @@
         Example 2:
         ==========
         
-        Selenium WebDriver is often used as a basis for testing web 
applications.  Here is a simple example uisng Python's standard `unittest 
<http://docs.python.org/3/library/unittest.html>`_ library:
+        Selenium WebDriver is often used as a basis for testing web 
applications.  Here is a simple example using Python's standard `unittest 
<http://docs.python.org/3/library/unittest.html>`_ library:
         
         .. code-block:: python
         
@@ -136,11 +135,11 @@
         
         However, to use Selenium Webdriver Remote or the legacy Selenium API 
(Selenium-RC), you need to also run the Selenium server.  The server requires a 
Java Runtime Environment (JRE).
         
-        Download the server separately, from: 
http://selenium-release.storage.googleapis.com/3.13/selenium-server-standalone-3.13.0.jar
+        Download the server separately, from: 
http://selenium-release.storage.googleapis.com/3.14/selenium-server-standalone-3.14.0.jar
         
         Run the server from the command line::
         
-            java -jar selenium-server-standalone-3.13.0.jar
+            java -jar selenium-server-standalone-3.14.0.jar
         
         Then run your Python client scripts.
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/README.rst 
new/selenium-3.14.0/README.rst
--- old/selenium-3.13.0/README.rst      2018-06-25 16:33:22.000000000 +0200
+++ new/selenium-3.14.0/README.rst      2018-07-26 11:59:38.000000000 +0200
@@ -35,7 +35,7 @@
 
     pip install -U selenium
 
-Alternately, you can download the source distribution from `PyPI 
<https://pypi.org/project/selenium/#files>`_ (e.g. selenium-3.13.0.tar.gz), 
unarchive it, and run::
+Alternately, you can download the source distribution from `PyPI 
<https://pypi.org/project/selenium/#files>`_ (e.g. selenium-3.14.0.tar.gz), 
unarchive it, and run::
 
     python setup.py install
 
@@ -100,7 +100,7 @@
 Example 2:
 ==========
 
-Selenium WebDriver is often used as a basis for testing web applications.  
Here is a simple example uisng Python's standard `unittest 
<http://docs.python.org/3/library/unittest.html>`_ library:
+Selenium WebDriver is often used as a basis for testing web applications.  
Here is a simple example using Python's standard `unittest 
<http://docs.python.org/3/library/unittest.html>`_ library:
 
 .. code-block:: python
 
@@ -127,11 +127,11 @@
 
 However, to use Selenium Webdriver Remote or the legacy Selenium API 
(Selenium-RC), you need to also run the Selenium server.  The server requires a 
Java Runtime Environment (JRE).
 
-Download the server separately, from: 
http://selenium-release.storage.googleapis.com/3.13/selenium-server-standalone-3.13.0.jar
+Download the server separately, from: 
http://selenium-release.storage.googleapis.com/3.14/selenium-server-standalone-3.14.0.jar
 
 Run the server from the command line::
 
-    java -jar selenium-server-standalone-3.13.0.jar
+    java -jar selenium-server-standalone-3.14.0.jar
 
 Then run your Python client scripts.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium/__init__.py 
new/selenium-3.14.0/selenium/__init__.py
--- old/selenium-3.13.0/selenium/__init__.py    2018-06-25 16:33:22.000000000 
+0200
+++ new/selenium-3.14.0/selenium/__init__.py    2018-07-26 11:59:38.000000000 
+0200
@@ -16,4 +16,4 @@
 # under the License.
 
 
-__version__ = "3.13.0"
+__version__ = "3.14.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium/webdriver/__init__.py 
new/selenium-3.14.0/selenium/webdriver/__init__.py
--- old/selenium-3.13.0/selenium/webdriver/__init__.py  2018-06-25 
16:38:06.000000000 +0200
+++ new/selenium-3.14.0/selenium/webdriver/__init__.py  2018-08-02 
14:59:35.000000000 +0200
@@ -36,4 +36,4 @@
 from .common.touch_actions import TouchActions  # noqa
 from .common.proxy import Proxy  # noqa
 
-__version__ = '3.13.0'
+__version__ = '3.14.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/selenium-3.13.0/selenium/webdriver/common/action_chains.py 
new/selenium-3.14.0/selenium/webdriver/common/action_chains.py
--- old/selenium-3.13.0/selenium/webdriver/common/action_chains.py      
2017-12-08 05:51:14.000000000 +0100
+++ new/selenium-3.14.0/selenium/webdriver/common/action_chains.py      
2018-07-26 11:59:38.000000000 +0200
@@ -199,7 +199,7 @@
         """
         if self._driver.w3c:
             self.w3c_actions.pointer_action.click_and_hold(source) \
-                                           .move_to_location(xoffset, yoffset) 
\
+                                           .move_by(xoffset, yoffset) \
                                            .release()
             for _ in range(3):
                 self.w3c_actions.key_action.pause()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium/webdriver/edge/webdriver.py 
new/selenium-3.14.0/selenium/webdriver/edge/webdriver.py
--- old/selenium-3.13.0/selenium/webdriver/edge/webdriver.py    2017-05-29 
21:32:48.000000000 +0200
+++ new/selenium-3.14.0/selenium/webdriver/edge/webdriver.py    2018-07-26 
11:59:38.000000000 +0200
@@ -14,6 +14,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+import warnings
 
 from selenium.webdriver.common import utils
 from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
@@ -25,12 +26,16 @@
 class WebDriver(RemoteWebDriver):
 
     def __init__(self, executable_path='MicrosoftWebDriver.exe',
-                 capabilities=None, port=0, verbose=False, log_path=None):
+                 capabilities=None, port=0, verbose=False, 
service_log_path=None, log_path=None):
+        if log_path:
+            warnings.warn('use service_log_path instead of log_path', 
DeprecationWarning)
+            service_log_path = log_path
+
         self.port = port
         if self.port == 0:
             self.port = utils.free_port()
 
-        self.edge_service = Service(executable_path, port=self.port, 
verbose=verbose, log_path=log_path)
+        self.edge_service = Service(executable_path, port=self.port, 
verbose=verbose, log_path=service_log_path)
         self.edge_service.start()
 
         if capabilities is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/selenium-3.13.0/selenium/webdriver/firefox/webdriver.py 
new/selenium-3.14.0/selenium/webdriver/firefox/webdriver.py
--- old/selenium-3.13.0/selenium/webdriver/firefox/webdriver.py 2018-04-23 
15:14:30.000000000 +0200
+++ new/selenium-3.14.0/selenium/webdriver/firefox/webdriver.py 2018-08-02 
14:55:40.000000000 +0200
@@ -17,17 +17,11 @@
 import warnings
 
 try:
-    import http.client as http_client
-except ImportError:
-    import httplib as http_client
-
-try:
     basestring
 except NameError:  # Python 3.x
     basestring = str
 
 import shutil
-import socket
 import sys
 from contextlib import contextmanager
 
@@ -56,8 +50,8 @@
     def __init__(self, firefox_profile=None, firefox_binary=None,
                  timeout=30, capabilities=None, proxy=None,
                  executable_path="geckodriver", options=None,
-                 log_path="geckodriver.log", firefox_options=None,
-                 service_args=None, desired_capabilities=None):
+                 service_log_path="geckodriver.log", firefox_options=None,
+                 service_args=None, desired_capabilities=None, log_path=None):
         """Starts a new local session of Firefox.
 
         Based on the combination and specificity of the various keyword
@@ -100,12 +94,15 @@
             binary to use for Firefox 47.0.1 and greater, which
             defaults to picking up the binary from the system path.
         :param options: Instance of ``options.Options``.
-        :param log_path: Where to log information from the driver.
+        :param service_log_path: Where to log information from the driver.
         :param desired_capabilities: alias of capabilities. In future
             versions of this library, this will replace 'capabilities'.
             This will make the signature consistent with RemoteWebDriver.
 
         """
+        if log_path:
+            warnings.warn('use service_log_path instead of log_path', 
DeprecationWarning)
+            service_log_path = log_path
         if firefox_options:
             warnings.warn('use options instead of firefox_options', 
DeprecationWarning)
             options = firefox_options
@@ -156,7 +153,7 @@
             self.service = Service(
                 executable_path,
                 service_args=service_args,
-                log_path=log_path)
+                log_path=service_log_path)
             self.service.start()
 
             capabilities.update(options.to_capabilities())
@@ -197,9 +194,8 @@
         """Quits the driver and close every associated window."""
         try:
             RemoteWebDriver.quit(self)
-        except (http_client.BadStatusLine, socket.error):
-            # Happens if Firefox shutsdown before we've read the response from
-            # the socket.
+        except Exception:
+            # We don't care about the message because something probably has 
gone wrong
             pass
 
         if self.w3c:
Binary files old/selenium-3.13.0/selenium/webdriver/firefox/webdriver.xpi and 
new/selenium-3.14.0/selenium/webdriver/firefox/webdriver.xpi differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium/webdriver/ie/webdriver.py 
new/selenium-3.14.0/selenium/webdriver/ie/webdriver.py
--- old/selenium-3.13.0/selenium/webdriver/ie/webdriver.py      2018-03-29 
16:48:54.000000000 +0200
+++ new/selenium-3.14.0/selenium/webdriver/ie/webdriver.py      2018-07-26 
11:59:38.000000000 +0200
@@ -25,7 +25,7 @@
 DEFAULT_PORT = 0
 DEFAULT_HOST = None
 DEFAULT_LOG_LEVEL = None
-DEFAULT_LOG_FILE = None
+DEFAULT_SERVICE_LOG_PATH = None
 
 
 class WebDriver(RemoteWebDriver):
@@ -33,8 +33,8 @@
 
     def __init__(self, executable_path='IEDriverServer.exe', capabilities=None,
                  port=DEFAULT_PORT, timeout=DEFAULT_TIMEOUT, host=DEFAULT_HOST,
-                 log_level=DEFAULT_LOG_LEVEL, log_file=DEFAULT_LOG_FILE, 
options=None,
-                 ie_options=None, desired_capabilities=None):
+                 log_level=DEFAULT_LOG_LEVEL, 
service_log_path=DEFAULT_SERVICE_LOG_PATH, options=None,
+                 ie_options=None, desired_capabilities=None, log_file=None):
         """
         Creates a new instance of the chrome driver.
 
@@ -45,10 +45,13 @@
          - capabilities: capabilities Dictionary object
          - port - port you would like the service to run, if left as 0, a free 
port will be found.
          - log_level - log level you would like the service to run.
-         - log_file - log file you would like the service to log to.
+         - service_log_path - target of logging of service, may be "stdout", 
"stderr" or file path.
          - options: IE Options instance, providing additional IE options
          - desired_capabilities: alias of capabilities; this will make the 
signature consistent with RemoteWebDriver.
         """
+        if log_file:
+            warnings.warn('use service_log_path instead of log_file', 
DeprecationWarning)
+            service_log_path = log_file
         if ie_options:
             warnings.warn('use options instead of ie_options', 
DeprecationWarning)
             options = ie_options
@@ -56,8 +59,6 @@
         if self.port == 0:
             self.port = utils.free_port()
         self.host = host
-        self.log_level = log_level
-        self.log_file = log_file
 
         # If both capabilities and desired capabilities are set, ignore 
desired capabilities.
         if capabilities is None and desired_capabilities:
@@ -77,8 +78,8 @@
             executable_path,
             port=self.port,
             host=self.host,
-            log_level=self.log_level,
-            log_file=self.log_file)
+            log_level=log_level,
+            log_file=service_log_path)
 
         self.iedriver.start()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/selenium-3.13.0/selenium/webdriver/remote/remote_connection.py 
new/selenium-3.14.0/selenium/webdriver/remote/remote_connection.py
--- old/selenium-3.13.0/selenium/webdriver/remote/remote_connection.py  
2018-06-25 15:11:27.000000000 +0200
+++ new/selenium-3.14.0/selenium/webdriver/remote/remote_connection.py  
2018-08-02 14:55:40.000000000 +0200
@@ -15,19 +15,17 @@
 # specific language governing permissions and limitations
 # under the License.
 
+import base64
 import logging
+import platform
 import socket
 import string
-import base64
-import platform
+
+import urllib3
 
 try:
-    import http.client as httplib
-    from urllib import request as url_request
     from urllib import parse
 except ImportError:  # above is available in py3+, below is py2.7
-    import httplib as httplib
-    import urllib2 as url_request
     import urlparse as parse
 
 from selenium.webdriver.common import utils as common_utils
@@ -39,98 +37,6 @@
 LOGGER = logging.getLogger(__name__)
 
 
-class Request(url_request.Request):
-    """
-    Extends the url_request.Request to support all HTTP request types.
-    """
-
-    def __init__(self, url, data=None, method=None):
-        """
-        Initialise a new HTTP request.
-
-        :Args:
-            - url - String for the URL to send the request to.
-            - data - Data to send with the request.
-        """
-        if method is None:
-            method = data is not None and 'POST' or 'GET'
-        elif method != 'POST' and method != 'PUT':
-            data = None
-        self._method = method
-        url_request.Request.__init__(self, url, data=data)
-
-    def get_method(self):
-        """
-        Returns the HTTP method used by this request.
-        """
-        return self._method
-
-
-class Response(object):
-    """
-    Represents an HTTP response.
-    """
-
-    def __init__(self, fp, code, headers, url):
-        """
-        Initialise a new Response.
-
-        :Args:
-            - fp - The response body file object.
-            - code - The HTTP status code returned by the server.
-            - headers - A dictionary of headers returned by the server.
-            - url - URL of the retrieved resource represented by this Response.
-        """
-        self.fp = fp
-        self.read = fp.read
-        self.code = code
-        self.headers = headers
-        self.url = url
-
-    def close(self):
-        """
-        Close the response body file object.
-        """
-        self.read = None
-        self.fp = None
-
-    def info(self):
-        """
-        Returns the response headers.
-        """
-        return self.headers
-
-    def geturl(self):
-        """
-        Returns the URL for the resource returned in this response.
-        """
-        return self.url
-
-
-class HttpErrorHandler(url_request.HTTPDefaultErrorHandler):
-    """
-    A custom HTTP error handler.
-
-    Used to return Response objects instead of raising an HTTPError exception.
-    """
-
-    def http_error_default(self, req, fp, code, msg, headers):
-        """
-        Default HTTP error handler.
-
-        :Args:
-            - req - The original Request object.
-            - fp - The response body file object.
-            - code - The HTTP status code returned by the server.
-            - msg - The HTTP status message returned by the server.
-            - headers - The response headers.
-
-        :Returns:
-            A new Response object.
-        """
-        return Response(fp, code, headers, req.get_full_url())
-
-
 class RemoteConnection(object):
     """A connection with the Remote WebDriver server.
 
@@ -201,7 +107,6 @@
         # Attempt to resolve the hostname and get an IP address.
         self.keep_alive = keep_alive
         parsed_url = parse.urlparse(remote_server_addr)
-        addr = parsed_url.hostname
         if parsed_url.hostname and resolve_ip:
             port = parsed_url.port or None
             if parsed_url.scheme == "https":
@@ -215,7 +120,6 @@
                                                       port=port)
             if ip:
                 netloc = ip
-                addr = netloc
                 if parsed_url.port:
                     netloc = common_utils.join_host_port(netloc,
                                                          parsed_url.port)
@@ -233,8 +137,7 @@
 
         self._url = remote_server_addr
         if keep_alive:
-            self._conn = httplib.HTTPConnection(
-                str(addr), str(parsed_url.port), timeout=self._timeout)
+            self._conn = urllib3.PoolManager()
 
         self._commands = {
             Command.STATUS: ('GET', '/status'),
@@ -487,88 +390,51 @@
 
         parsed_url = parse.urlparse(url)
         headers = self.get_remote_connection_headers(parsed_url, 
self.keep_alive)
-
+        resp = None
         if self.keep_alive:
             if body and method != 'POST' and method != 'PUT':
                 body = None
-            try:
-                self._conn.request(method, parsed_url.path, body, headers)
-                resp = self._conn.getresponse()
-            except (httplib.HTTPException, socket.error):
-                self._conn.close()
-                raise
+            resp = self._conn.request(method, url, body=body, headers=headers)
 
             statuscode = resp.status
         else:
-            password_manager = None
-            if parsed_url.username:
-                netloc = parsed_url.hostname
-                if parsed_url.port:
-                    netloc += ":%s" % parsed_url.port
-                cleaned_url = parse.urlunparse((
-                    parsed_url.scheme,
-                    netloc,
-                    parsed_url.path,
-                    parsed_url.params,
-                    parsed_url.query,
-                    parsed_url.fragment))
-                password_manager = 
url_request.HTTPPasswordMgrWithDefaultRealm()
-                password_manager.add_password(None,
-                                              "%s://%s" % (parsed_url.scheme, 
netloc),
-                                              parsed_url.username,
-                                              parsed_url.password)
-                request = Request(cleaned_url, data=body.encode('utf-8'), 
method=method)
-            else:
-                request = Request(url, data=body.encode('utf-8'), 
method=method)
-
-            for key, val in headers.items():
-                request.add_header(key, val)
+            http = urllib3.PoolManager()
+            resp = http.request(method, url, body=body, headers=headers)
 
-            if password_manager:
-                opener = 
url_request.build_opener(url_request.HTTPRedirectHandler(),
-                                                  HttpErrorHandler(),
-                                                  
url_request.HTTPBasicAuthHandler(password_manager))
-            else:
-                opener = 
url_request.build_opener(url_request.HTTPRedirectHandler(),
-                                                  HttpErrorHandler())
-            resp = opener.open(request, timeout=self._timeout)
-            statuscode = resp.code
+            statuscode = resp.status
             if not hasattr(resp, 'getheader'):
                 if hasattr(resp.headers, 'getheader'):
                     resp.getheader = lambda x: resp.headers.getheader(x)
                 elif hasattr(resp.headers, 'get'):
                     resp.getheader = lambda x: resp.headers.get(x)
 
-        data = resp.read()
-        LOGGER.debug(data)
+        data = resp.data.decode('UTF-8')
         try:
             if 300 <= statuscode < 304:
                 return self._request('GET', resp.getheader('location'))
-            body = data.decode('utf-8').replace('\x00', '').strip()
             if 399 < statuscode <= 500:
-                return {'status': statuscode, 'value': body}
+                return {'status': statuscode, 'value': data}
             content_type = []
             if resp.getheader('Content-Type') is not None:
                 content_type = resp.getheader('Content-Type').split(';')
             if not any([x.startswith('image/png') for x in content_type]):
+
                 try:
-                    data = utils.load_json(body.strip())
+                    data = utils.load_json(data.strip())
                 except ValueError:
                     if 199 < statuscode < 300:
                         status = ErrorCode.SUCCESS
                     else:
                         status = ErrorCode.UNKNOWN_ERROR
-                    return {'status': status, 'value': body.strip()}
+                    return {'status': status, 'value': data.strip()}
 
-                assert type(data) is dict, (
-                    'Invalid server response body: %s' % body)
                 # Some of the drivers incorrectly return a response
                 # with no 'value' field when they should return null.
                 if 'value' not in data:
                     data['value'] = None
                 return data
             else:
-                data = {'status': 0, 'value': body.strip()}
+                data = {'status': 0, 'value': data}
                 return data
         finally:
             LOGGER.debug("Finished Request")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium/webdriver/remote/utils.py 
new/selenium-3.14.0/selenium/webdriver/remote/utils.py
--- old/selenium-3.13.0/selenium/webdriver/remote/utils.py      2017-05-29 
21:32:48.000000000 +0200
+++ new/selenium-3.14.0/selenium/webdriver/remote/utils.py      2018-08-02 
14:55:40.000000000 +0200
@@ -21,7 +21,6 @@
 import tempfile
 import zipfile
 
-from selenium.common.exceptions import NoSuchElementException
 
 LOGGER = logging.getLogger(__name__)
 
@@ -38,28 +37,6 @@
     return json.loads(s)
 
 
-def handle_find_element_exception(e):
-    if ("Unable to find" in e.response["value"]["message"] or "Unable to 
locate" in e.response["value"]["message"]):
-        raise NoSuchElementException("Unable to locate element:")
-    else:
-        raise e
-
-
-def return_value_if_exists(resp):
-    if resp and "value" in resp:
-        return resp["value"]
-
-
-def get_root_parent(elem):
-    parent = elem.parent
-    while True:
-        try:
-            parent.parent
-            parent = parent.parent
-        except AttributeError:
-            return parent
-
-
 def unzip_to_temp_dir(zip_file_name):
     """Unzip zipfile to a temporary directory.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/selenium-3.13.0/selenium/webdriver/support/expected_conditions.py 
new/selenium-3.14.0/selenium/webdriver/support/expected_conditions.py
--- old/selenium-3.13.0/selenium/webdriver/support/expected_conditions.py       
2017-12-08 05:51:14.000000000 +0100
+++ new/selenium-3.14.0/selenium/webdriver/support/expected_conditions.py       
2018-08-02 14:55:40.000000000 +0200
@@ -20,6 +20,7 @@
 from selenium.common.exceptions import StaleElementReferenceException
 from selenium.common.exceptions import WebDriverException
 from selenium.common.exceptions import NoAlertPresentException
+from selenium.webdriver.remote.webdriver import WebElement
 
 """
  * Canned "Expected Conditions" which are generally useful within webdriver
@@ -67,7 +68,7 @@
     """ An expectation for checking that the current url contains a
     case-sensitive substring.
     url is the fragment of url expected,
-    returns True when the title matches, False otherwise
+    returns True when the url matches, False otherwise
     """
     def __init__(self, url):
         self.url = url
@@ -79,7 +80,7 @@
 class url_matches(object):
     """An expectation for checking the current url.
     pattern is the expected pattern, which must be an exact match
-    returns True if the title matches, false otherwise."""
+    returns True if the url matches, false otherwise."""
     def __init__(self, pattern):
         self.pattern = pattern
 
@@ -93,7 +94,7 @@
 class url_to_be(object):
     """An expectation for checking the current url.
     url is the expected url, which must be an exact match
-    returns True if the title matches, false otherwise."""
+    returns True if the url matches, false otherwise."""
     def __init__(self, url):
         self.url = url
 
@@ -259,11 +260,14 @@
     locator used to find the element
     """
     def __init__(self, locator):
-        self.locator = locator
+        self.target = locator
 
     def __call__(self, driver):
         try:
-            return _element_if_visible(_find_element(driver, self.locator), 
False)
+            target = self.target
+            if not isinstance(target, WebElement):
+                target = _find_element(driver, target)
+            return _element_if_visible(target, False)
         except (NoSuchElementException, StaleElementReferenceException):
             # In the case of NoSuchElement, returns true because the element is
             # not present in DOM. The try block checks if the element is 
present
@@ -273,6 +277,16 @@
             return True
 
 
+class invisibility_of_element(invisibility_of_element_located):
+    """ An Expectation for checking that an element is either invisible or not
+    present on the DOM.
+
+    element is either a locator (text) or an WebElement
+    """
+    def __init(self, element):
+        self.target = element
+
+
 class element_to_be_clickable(object):
     """ An Expectation for checking an element is visible and enabled such that
     you can click it."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium.egg-info/PKG-INFO 
new/selenium-3.14.0/selenium.egg-info/PKG-INFO
--- old/selenium-3.13.0/selenium.egg-info/PKG-INFO      2018-06-25 
21:49:39.000000000 +0200
+++ new/selenium-3.14.0/selenium.egg-info/PKG-INFO      2018-08-02 
15:22:42.000000000 +0200
@@ -1,12 +1,11 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
 Name: selenium
-Version: 3.13.0
+Version: 3.14.0
 Summary: Python bindings for Selenium
 Home-page: https://github.com/SeleniumHQ/selenium/
-Author: UNKNOWN
-Author-email: UNKNOWN
+Maintainer: david.burns
+Maintainer-email: david.bu...@theautomatedtester.co.uk
 License: Apache 2.0
-Description-Content-Type: UNKNOWN
 Description: ======================
         Selenium Client Driver
         ======================
@@ -44,7 +43,7 @@
         
             pip install -U selenium
         
-        Alternately, you can download the source distribution from `PyPI 
<https://pypi.org/project/selenium/#files>`_ (e.g. selenium-3.13.0.tar.gz), 
unarchive it, and run::
+        Alternately, you can download the source distribution from `PyPI 
<https://pypi.org/project/selenium/#files>`_ (e.g. selenium-3.14.0.tar.gz), 
unarchive it, and run::
         
             python setup.py install
         
@@ -109,7 +108,7 @@
         Example 2:
         ==========
         
-        Selenium WebDriver is often used as a basis for testing web 
applications.  Here is a simple example uisng Python's standard `unittest 
<http://docs.python.org/3/library/unittest.html>`_ library:
+        Selenium WebDriver is often used as a basis for testing web 
applications.  Here is a simple example using Python's standard `unittest 
<http://docs.python.org/3/library/unittest.html>`_ library:
         
         .. code-block:: python
         
@@ -136,11 +135,11 @@
         
         However, to use Selenium Webdriver Remote or the legacy Selenium API 
(Selenium-RC), you need to also run the Selenium server.  The server requires a 
Java Runtime Environment (JRE).
         
-        Download the server separately, from: 
http://selenium-release.storage.googleapis.com/3.13/selenium-server-standalone-3.13.0.jar
+        Download the server separately, from: 
http://selenium-release.storage.googleapis.com/3.14/selenium-server-standalone-3.14.0.jar
         
         Run the server from the command line::
         
-            java -jar selenium-server-standalone-3.13.0.jar
+            java -jar selenium-server-standalone-3.14.0.jar
         
         Then run your Python client scripts.
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium.egg-info/SOURCES.txt 
new/selenium-3.14.0/selenium.egg-info/SOURCES.txt
--- old/selenium-3.13.0/selenium.egg-info/SOURCES.txt   2018-06-25 
21:49:40.000000000 +0200
+++ new/selenium-3.14.0/selenium.egg-info/SOURCES.txt   2018-08-02 
15:22:42.000000000 +0200
@@ -8,6 +8,7 @@
 selenium.egg-info/SOURCES.txt
 selenium.egg-info/dependency_links.txt
 selenium.egg-info/not-zip-safe
+selenium.egg-info/requires.txt
 selenium.egg-info/top_level.txt
 selenium/common/__init__.py
 selenium/common/exceptions.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/selenium.egg-info/requires.txt 
new/selenium-3.14.0/selenium.egg-info/requires.txt
--- old/selenium-3.13.0/selenium.egg-info/requires.txt  1970-01-01 
01:00:00.000000000 +0100
+++ new/selenium-3.14.0/selenium.egg-info/requires.txt  2018-08-02 
15:22:42.000000000 +0200
@@ -0,0 +1 @@
+urllib3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/selenium-3.13.0/setup.py new/selenium-3.14.0/setup.py
--- old/selenium-3.13.0/setup.py        2018-06-25 21:46:55.000000000 +0200
+++ new/selenium-3.14.0/setup.py        2018-08-02 15:18:17.000000000 +0200
@@ -29,7 +29,7 @@
 setup_args = {
     'cmdclass': {'install': install},
     'name': 'selenium',
-    'version': "3.13.0",
+    'version': "3.14.0",
     'license': 'Apache 2.0',
     'description': 'Python bindings for Selenium',
     'long_description': open(join(abspath(dirname(__file__)), 
"README.rst")).read(),
@@ -67,16 +67,12 @@
                  'selenium.webdriver.phantomjs',
                  'selenium.webdriver.remote',
                  'selenium.webdriver.support', ],
-    'package_data': {
-        'selenium.webdriver.firefox': ['*.xpi', 'webdriver_prefs.json'],
-        'selenium.webdriver.remote': ['getAttribute.js', 'isDisplayed.js'],
-    },
-    'data_files': [('selenium/webdriver/firefox/x86', 
['selenium/webdriver/firefox/x86/x_ignore_nofocus.so']),
-                   ('selenium/webdriver/firefox/amd64', 
['selenium/webdriver/firefox/amd64/x_ignore_nofocus.so']),
-                   ('selenium/webdriver/remote', 
['selenium/webdriver/remote/getAttribute.js']),
-                   ('selenium/webdriver/remote', 
['selenium/webdriver/remote/isDisplayed.js'])],
     'include_package_data': True,
-    'zip_safe': False
+    'install_requires': ['urllib3'],
+    'zip_safe': False,
+    'maintainer':'david.burns',
+    'maintainer_email':'david.bu...@theautomatedtester.co.uk'
+
 }
 
 setup(**setup_args)


Reply via email to