2016-04-28 12 views
0

セレンによる機能テストでログインをテストしたいですか?PYセレンunittest-クリック要素がログインしていません

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

クイックチェック。 'login'ボタンをクリックした後に' time.sleep(5) 'を追加するとどうなりますか?それはテストをパスしますか? ( 'import time'を忘れないでください) – 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() 
関連する問題