TypeError: urlopen () má více hodnot klíčových argumentů ‚těla‘ a zároveň se snaží Selen na Xubuntu 14.04.5

hlasů
2

životní prostředí

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty

GCC

gcc --version
gcc (Ubuntu 4.8.5-4ubuntu8~14.04.2) 4.8.5

Krajta

python --version
Python 2.7.6

jádro

pip --version
pip 18.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

urllib3

pip list | grep url
urllib3                      1.7.1     

Chromedriver

chromedriver --version
ChromeDriver 2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4)

chróm

chromium-browser --version
Chromium 65.0.3325.181 Built on Ubuntu , running on Ubuntu 14.04

Selen

pip install selenium
Requirement already satisfied: selenium in /usr/local/lib/python2.7/dist-packages (3.141.0)
Requirement already satisfied: urllib3 in /usr/lib/python2.7/dist-packages (from selenium) (1.7.1)

Řidič Chrome pro Linux 64bit instalační

Zkoušel jsem několik verzí, ale všechny vedou ke stejnému nový problém

rm ~/Downloads/chromedriver_linux64.zip \
wget -N http://chromedriver.storage.googleapis.com/2.26/chromedriver_linux64.zip -P ~/Downloads; \
unzip ~/Downloads/chromedriver_linux64.zip -d ~/Downloads; \
chmod +x ~/Downloads/chromedriver; \
rm /usr/local/share/chromedriver; \
sudo mv -f ~/Downloads/chromedriver /usr/local/share/chromedriver; \
rm /usr/local/bin/chromedriver; \
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver; \
rm /usr/bin/chromedriver; \
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver; \
ls -al /usr/bin/chromedriver; \
ls -al /usr/local/bin/chromedriver; \
ls -al /usr/local/share/chromedriver

... zkoušel

# wget -N http://chromedriver.storage.googleapis.com/2.21/chromedriver_linux64.zip -P ~/Downloads
# wget -N http://chromedriver.storage.googleapis.com/2.27/chromedriver_linux64.zip -P ~/Downloads
# wget -N http://chromedriver.storage.googleapis.com/2.33/chromedriver_linux64.zip -P ~/Downloads
# wget -N http://chromedriver.storage.googleapis.com/2.43/chromedriver_linux64.zip -P ~/Downloads
# wget -N http://chromedriver.storage.googleapis.com/71.0.3578.33/chromedriver_linux64.zip -P ~/Downloads

Test skript test.py

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities    
# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
driver = webdriver.Chrome(desired_capabilities=d)
# load some site
driver.get('http://foo.com')
# print messages
for entry in driver.get_log('browser'):
    print entry

Chyba

python test.py 
Traceback (most recent call last):
  File test.py, line 6, in <module>
    driver = webdriver.Chrome(desired_capabilities=d)
  File /usr/local/lib/python2.7/dist-packages/selenium/webdriver/chrome/webdriver.py, line 81, in __init__
    desired_capabilities=desired_capabilities)
  File /usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py, line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File /usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py, line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File /usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py, line 319, in execute
    response = self.command_executor.execute(driver_command, params)
  File /usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py, line 374, in execute
    return self._request(command_info[0], url, body=data)
  File /usr/local/lib/python2.7/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/python2.7/dist-packages/urllib3/request.py, line 79, in request
    **urlopen_kw)
  File /usr/lib/python2.7/dist-packages/urllib3/request.py, line 142, in request_encode_body
    **urlopen_kw)
TypeError: urlopen() got multiple values for keyword argument 'body'

Následovaly další témata

TypeError: urlopen dostal více hodnot pro klíčové slovo argumentu ‚těla‘ při provádění testů prostřednictvím selen a Python na Kubuntu 14.04

urllib3 verze

# aptitude show python-urllib3
Package: python-urllib3                  
State: installed
Automatically installed: yes
Version: 1.7.1-1ubuntu4.1
Priority: optional
Section: python
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Uncompressed Size: 201 k
Depends: python:any (< 2.8), python:any (>= 2.7.5-5~), python-six
Recommends: ca-certificates
Description: HTTP library with thread-safe connection pooling for Python
 urllib3 supports features left out of urllib and urllib2 libraries. 

 * Re-use the same socket connection for multiple requests (HTTPConnectionPool and HTTPSConnectionPool) (with optional client-side certificate verification). 
 * File posting (encode_multipart_formdata). 
 * Built-in redirection and retries (optional). 
 * Supports gzip and deflate decoding. 
 * Thread-safe and sanity-safe. 
 * Small and easy to understand codebase perfect for extending and building upon.
Homepage: http://urllib3.readthedocs.org

Mám další nastavení se stejnými verzemi chromedriver chrom-prohlížeče a chyba se nestane. Co jiného jsem mohl zkontrolovat?

Jakékoliv další ukazatele?

AKTUALIZACE

Na prostředí, ve kterém se problém nestane se pip verze není stejný.

pip v1.5.4Místo pip install --upgrade pip==1.5.4 Nyní odinstalovat pip 18.1a znovu nainstalovat mé PIP balíčky.

Chcete-li nainstalovat zpět nejnovější verzi pip, pokud chcete znovu vrátit

python -m pip install --upgrade pip

Také poznamenal, že na fungující stroj mám trochu jinou verzi GCC

gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

vyřešeno

Musel jsem začít od čerstvé instalaci Xubuntu a běžel

sudo pip install -U urllib3
Položena 07/11/2018 v 23:48
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Možné řešení:

1 Zkuste upgrade verze Ø urllib3, zdá se, jako verze urllib3 je starý podle: https://github.com/kubernetes-client/python/blob/master/requirements.txt

Ujistěte se, že verze urllib3 je 1,16 nebo více. Zde najdete nastavení: https://launchpad.net/ubuntu/+source/python-urllib3/1.21.1-1

Ref (další příspěvek v SO): TypeError: urlopen () dostal více hodnot pro klíčové slovo argumenty ‚těla‘ při provádění testů prostřednictvím selen a Python na Kubuntu 14.04

2 Aktualizace verze Pythonu:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update 
sudo apt-get install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --config python3

Ref: http://ubuntuhandbook.org/index.php/2017/07/install-python-3-6-1-in-ubuntu-16-04-lts/

Odpovězeno 10/11/2018 v 23:51
zdroj uživatelem

hlasů
1

Trvalo nějaký riziko a odstranit urllib 1.7.1 (výchozí ten, který je odesláno během Ubuntu 14.04). To může záviset na vašich požadavcích, chcete-li riskovat a odinstalovat.

sudo apt-get remove python-urllib3

následován

sudo pip install -U urllib3

Tato fixní problém pro mě.

Odpovězeno 08/11/2018 v 00:40
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more