2016-04-28 69 views
0

希望能夠使用硒在功能測試中測試登錄。PY硒單元測試 - 點擊元素不會登錄

views.py:

def login_view(request, *args, **kwargs): 
    if request.method == 'POST': 
     if not request.POST.get('remember_me', None): 
      request.session.set_expiry(0) 
    return auth_views.login(request, *args, **kwargs) 

functional_tests.py:

class SomeTestCase(unittest.TestCase): 

    def setUp(self): 
     self.browser = webdriver.Firefox() 

    def test1(self):  
     self.browser.get("http://www.asite.com/account/login/") 
     username = self.browser.find_element_by_id("id_username") 
     password = self.browser.find_element_by_id("id_password") 
     username.send_keys(USER['username']) 
     password.send_keys(USER['password']) 
     self.browser.find_element_by_name("login").click() 

     # should now be on the right page 
     self.browser.get('http://www.asite.com/loggedin_only') 
     logout_link_text = self.browser.find_element(By.PARTIAL_LINK_TEXT,"Logout") 
     self.assertisNotNone(logout_link_text) 

失敗。 手動登錄並正確重定向到loggedin_only頁面。 也試過了一個隱含的等待。

有沒有測試重定向的好方法?

+0

快速檢查。如果在單擊「登錄」按鈕後添加'time.sleep(5)',會怎樣?是否使測試通過? (別忘了輸入時間) – alecxe

回答

0

看來你沒有填補正確的領域。正確的是在一個框架中。以下是登錄網站的示例:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait 

browser = webdriver.Firefox() 
wait = WebDriverWait(browser, 10) 

browser.get("https://www.asite.com/login-home/") 

# click login 
browser.find_element_by_css_selector("#top-login").click() 

# switch to the login frame 
browser.switch_to_frame("iFrameAsite") 

# wait for the submit button to appear 
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "input.btn-submit"))) 

# fill the form and submit 
browser.find_element_by_css_selector("input[name$='login']").send_keys('my login') 
browser.find_element_by_css_selector("input[name$='password']").send_keys('my password') 
browser.find_element_by_css_selector("input.btn-submit").click()