Я пытаюсь войти в систему с python Selenium на веб-страницу, требующую учетных данных.
В отличие от примера здесь мое имя пользователя - это адрес электронной почты, поэтому он содержит символ "@" (и я использую Python).
from selenium import webdriver
driver = webdriver.Firefox()
webpage = 'http://somewhere.com/cgi-bin/dirwrap.cgi?template=template&path=news'
username = '[email protected]'
password = 'mypassword'
url = username + ':' + password + '@' + webpage
print(url)
driver.get(url)
выход
[email protected]:mypassword@http://somewhere.com/cgi-bin/dirwrap.cgi?template=template&path=news
Traceback (most recent call last):
File "question.py", line 12, in <module>
driver.get(url)
File "/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 324, in get
self.execute(Command.GET, {'url': url})
File "/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 312, in execute
self.error_handler.check_response(response)
File "/anaconda3/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: Malformed URL: [email protected]:mypassword@http://somewhere.com/cgi-bin/dirwrap.cgi?template=template&path=news is not a valid URL.
Я считаю, что проблема связана с дополнительным символом "@". Как включить его, не создавая неверный URL?
у вас нет правильного URL-адреса, он должен быть http://username:password@url
, но у вас есть username:password@http://url
попробуй это
webpage = 'somewhere.com/cgi-bin/dirwrap.cgi?template=template&path=news'
username = '[email protected]'
password = 'mypassword'
url = 'http://{}:{}@{}'.format(username, password, webpage)
Выход
http://[email protected]:[email protected]/cgi-bin/dirwrap.cgi?template=template&path=news
но я думаю, что это вызовет проблемы, потому что у вас есть два @
лучше было бы использовать send_keys
, например,
webpage = 'http://somewhere.com/cgi-bin/dirwrap.cgi?template=template&path=news'
driver.get(url)
email_input = driver.find_element_by_xpath('email input xpath')
email_inpit.clear()
email_input.send_keys(username)
pwd_input = driver.find_element_by_xpath('password input xpath')
pwd_inpit.clear()
pwd_input.send_keys(password)
# and after this you need to click on 'ok' btn