2016-04-28 91 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()