如何使用python Selenium Webdriver对另一个URL进行身份验证和浏览

时间:2016-11-14 23:57:22

标签: python selenium selenium-webdriver

我正在使用Python Selenium Chrome WebDriver

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

self.driver = webdriver.Chrome(chrome_options=options, desired_capabilities=capabilities)
print self.driver.get('https://192.168.178.20:1337/login?email=me@domain.com&password=mypassword')
print self.driver.get('https://192.168.178.20:1337/this/that?name=john')

在我不需要进行身份验证且我的GET已完成之前,我现在使用PUTemail参数进行password请求。我在POSTMAN中测试了PUT,它运行正常。

经过身份验证后,我想使用GET浏览到另一个网址,但我最有可能获得500,因为它不会保留我已通过身份验证。

  1. 如何查看我的登录信息是否有效?如何检索回复?

  2. 我是否需要检索&为第二个请求保存某种令牌或cookie吗?

  3. 任何指针都会非常感激吗?

    控制台日志

    headless_chrome > Auth
    None
    headless_chrome > GET
    None
    headless_chrome > CONSOLE
    headless_chrome console > {u'source': u'network', u'message': u'https://192.168.178.20:1337/this/that?name=john 0:0 Failed to load resource: the server responded with a status of 500 (Internal Server Error)', u'timestamp': 1479212713208, u'level': u'SEVERE'}
    headless_chrome > title:
    {'_file_detector': <selenium.webdriver.remote.file_detector.LocalFileDetector object at 0x7f8507a25f50>,
     '_is_remote': False,
     '_mobile': <selenium.webdriver.remote.mobile.Mobile object at 0x7f8507a25d90>,
     '_switch_to': <selenium.webdriver.remote.switch_to.SwitchTo instance at 0x7f8507a336c8>,
     'capabilities': {u'acceptSslCerts': True,
                      u'applicationCacheEnabled': False,
                      u'browserConnectionEnabled': False,
                      u'browserName': u'chrome',
                      u'chrome': {u'chromedriverVersion': u'2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a)',
                                  u'userDataDir': u'/tmp/.com.google.Chrome.ybR9Fm'},
                      u'cssSelectorsEnabled': True,
                      u'databaseEnabled': False,
                      u'handlesAlerts': True,
                      u'hasTouchScreen': False,
                      u'javascriptEnabled': True,
                      u'locationContextEnabled': True,
                      u'mobileEmulationEnabled': False,
                      u'nativeEvents': True,
                      u'platform': u'Linux',
                      u'rotatable': False,
                      u'takesHeapSnapshot': True,
                      u'takesScreenshot': True,
                      u'version': u'50.0.2661.102',
                      u'webStorageEnabled': True},
     'command_executor': <selenium.webdriver.chrome.remote_connection.ChromeRemoteConnection object at 0x7f8507a25cd0>,
     'error_handler': <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f8507a25d50>,
     'service': <selenium.webdriver.chrome.service.Service object at 0x7f85083bc3d0>,
     'session_id': u'72a5ce48d950be26b3f33de4adb34428',
     'w3c': False}
    headless_chrome > except else
    clean up Selenium browser
    

1 个答案:

答案 0 :(得分:0)

Selenium webdriver没有.put方法。您应该使用.get进行身份验证,然后导航到另一个网址。理想情况下,这应该工作。 如果这是手动工作,那么它也应该通过webdriver工作。