簡體   English   中英

使用Selenium在Django中測試用戶登錄

[英]Testing User Login in Django using Selenium

在Django / Selenium中,您是否需要始終以字符串形式輸入用戶名密碼 ,因為當您從用戶處調用密碼時,它會輸出一個哈希密碼,然后,如果Selenium將其輸入到窗口中,則將不允許您使用哈希密碼?

我的代碼的工作原理是:

def test_admin_login(self):
    # users types in username and passwords and presses enter
    self.browser.get(self.live_server_url + '/admin/')
    username_field = self.browser.find_element_by_name('username')
    username_field.send_keys('admin')
    password_field = self.browser.find_element_by_name('password')
    password_field.send_keys('1234')
    password_field.send_keys(Keys.RETURN)


    # login credentials are correct, and the user is redirected to the main admin page
    body = self.browser.find_element_by_tag_name('body')
    self.assertIn('Site administration', body.text)

但是,如果我將“ admin”切換為

admin = User.objects.get(username="admin")

並按如下所示調用管理員密碼:

password_field.send_keys(admin.password)

它將哈希密碼輸入瀏覽器,並且不允許我登錄。

還有其他方法可以使用密碼字符串嗎?

謝謝亞倫

如果使用測試數據庫,請為需要的用戶創建設置密碼。

def login_as(self, browser, user):
    # change password
    password = 'q'
    user.set_password(password)
    user.save()

    browser.get(self.live_server_url + '/admin/')
    username_field = browser.find_element_by_css_selector('form input[name="username"]')
    password_field = browser.find_element_by_css_selector('form input[name="password"]')
    username_field.send_keys(user.username)
    password_field.send_keys(password)

    submit = browser.find_element_by_css_selector('form input[type="submit"]')
    submit.click()

在我看來,您的問題的答案很可能是否。原因是您永遠不希望在不對哈希進行哈希處理(理想情況下也對其加鹽)的情況下以純文本形式存儲密碼。 不過,可以將Django配置為在將密碼存儲到數據庫之前不對您的密碼進行哈希處理。 如果不對它進行哈希處理,則可以執行所需操作:

admin = User.objects.get(username="admin")
password_field.send_keys(admin.password)

我不會推薦這個。 另外,您也無法在登錄頁面中使用密碼的哈希版本進行登錄,因為Django身份驗證后端將哈希已輸入的哈希值,並且將不匹配。

這有意義嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM