it-roy-ru.com

TypeError: urlopen () получил несколько значений для аргумента ключевого слова 'body' при выполнении тестов через Selenium и Python на Kubuntu 14.04

я пытаюсь запустить Selenium в Python на Kubuntu 14.04. Я получаю это сообщение об ошибке, пытаясь с chromedriver или geckodriver, оба с той же ошибкой.

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')

Эта ошибка возникает в:

driver = webdriver.Chrome()

Я пробовал с опциями, без опций, без жестко заданного пути или с путем.

Я понятия не имею, что происходит. Спасибо всем.

6
Geeh Oliveira

Это сообщение об ошибке ...

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

... подразумевает, что Клиент Python столкнулся с ошибкой при внутреннем вызове urlopen().

Эта ошибка обычно вызывается более старая версия из pip, которая установлена ​​вашими системами менеджер пакетов и может быть заменена более новой версией pip.


Решение

Обновление pip до последней версии (по крайней мере v18.0) решит вашу проблему.

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

Рекомендации

5
DebanjanB

Вы можете обновить свой urllib3, используя

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