web-dev-qa-db-fra.com

TypeError: urlopen () a obtenu plusieurs valeurs pour l'argument de mot clé 'body' lors de l'exécution de tests via Selenium et Python sous Kubuntu 14.04

j'essaie de lancer un sélénium en python sur Kubuntu 14.04. Je reçois ce message d'erreur lorsque j'essaie avec chromedriver ou geckodriver, les mêmes erreurs.

Traceback (most recent call last):
  File "vse.py", line 15, in <module>
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'/root/Desktop/chromedriver')
  File "/usr/local/lib/python3.4/dist-packages/Selenium/webdriver/chrome/webdriver.py", line 75, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.4/dist-packages/Selenium/webdriver/remote/webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.4/dist-packages/Selenium/webdriver/remote/webdriver.py", line 251, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.4/dist-packages/Selenium/webdriver/remote/webdriver.py", line 318, in execute
    response = self.command_executor.execute(driver_command, params)
  File "/usr/local/lib/python3.4/dist-packages/Selenium/webdriver/remote/remote_connection.py", line 375, in execute
    return self._request(command_info[0], url, body=data)
  File "/usr/local/lib/python3.4/dist-packages/Selenium/webdriver/remote/remote_connection.py", line 397, in _request
    resp = self._conn.request(method, url, body=body, headers=headers)
  File "/usr/lib/python3/dist-packages/urllib3/request.py", line 79, in request
    **urlopen_kw)
  File "/usr/lib/python3/dist-packages/urllib3/request.py", line 142, in request_encode_body
    **urlopen_kw)
TypeError: urlopen() got multiple values for keyword argument 'body'

import time
import mapeamentos as map
from Selenium import webdriver
from Selenium.webdriver.support.ui import WebDriverWait
from Selenium.webdriver.support import expected_conditions as EC
from Selenium.webdriver.common.by import By
from Selenium.common.exceptions import TimeoutException
from random import randint
import datetime
from Selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'/root/Desktop/chromedriver')
driver.get('http://192.168.1.11:66/webclient/login.html')

Cette erreur est renvoyée dans:

driver = webdriver.Chrome()

J'ai essayé avec des options, sans options, sans le chemin codé en dur ou avec le chemin.

Je n'ai aucune idée de ce qui se passe. Merci tout le monde.

6
Geeh Oliveira

Ce message d'erreur ...

TypeError: urlopen() got multiple values for keyword argument 'body'

... implique que le client Python a rencontré une erreur lors de l'appel de urlopen() en interne.

Cette erreur est généralement due à une ancienne version de pip installée par vos systèmes gestionnaire de paquets et pouvant être remplacée par une version plus récente de pip.


Solution

Mettre à jour pip vers la dernière version (atleast v18.0) résoudra votre problème.

C:\Users\myUser>python -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB)
    100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.3MB 544kB/s
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0

Références

5
DebanjanB

Vous pouvez mettre à jour votre urllib3 en utilisant

pip install --upgrade --ignore-installed urllib3
1
Moamen Abdelwahed