2016-04-14 34 views
1

Test etmek istediğim üçüncü taraf kimlik doğrulama için modal'ı tetiklemek için navbar numaralı bağlantıdaki bir bağlantıyı tıklatmaya çalışıyorum. Daha önce selenyum ile getirme ve tıklama hakkında biraz yardımım var ve her şey bu kadar iyiydi.Selenyum ve django testi

def test_live_societe_login_using_third_party_modal(self): 
    """TODO: Docstring for test_live_societe_login_third_party_modal. 
    :returns: return modal for third party authentication 

    """ 
    WebDriverWait(self.browser, 10).until(lambda browser: 
              self.browser.find_element_by_id 
              ('showlogin')).click() 
    self.assertIn('http://societe.herokuapp.com/contact', self.browser.current_url) 

Ben tüm uygulama sayfalarını test edebildi ama selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with istisna var bu bir isabet: Bu benim

<li class="pull-right hidden-xs hidden-sm" id="showlogin"><a href="#"><button type="button" class="btn btn-sm btn-info round">GET STARTED</button></a></li> 

benim test yapısını tıklayın çalışıyorum bağlantıdır olduğunu. Biraz kafam karıştı, birileri bana yardım etsin, teşekkürler.

<li class="pull-right hidden-xs hidden-sm" id="showlogin"><a href="#"><button type="button" class="btn btn-sm btn-info round">GET STARTED</button></a></li> 
<li class="dropdown hidden-md hidden-lg" id="showlogin"> 
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="false" aria-expanded="false"><button type="button" class="btn btn-sm btn-info round">GET STARTED</button></a> 
     <ul class="dropdown-menu"> 
      <li class="btn-group-vertical"><a id="facebook_login" href="/accounts/facebook/login" method="js-sdk" class="btn btn-default navbar-btn"><i class="fa fa-facebook"></i>&nbsp;Sign in with Facebook</a> 
       <a id="linkedin_login" href="/accounts/linkedin/login" class="btn btn-default navbar-btn"><i class="fa fa-linkedin"></i>&nbsp;Sign in with LinkedIn</a> 
       <a id="twitter_login" href="/accounts/twitter/login" class="btn btn-default navbar-btn"><i class="fa fa-twitter"></i>&nbsp;Sign in with Twitter</a></li> 
       </ul> 
      </li> 

Benim iki <li></li> etiketine sahip olduğunu görebilirsiniz, bir viewport büyük bir düğme:

+0

Selenyum gizli bir eleman tıklayın izin vermeyin:

Bu

üçüncü parti doğrulama için dropdown ve sosyal düğmesini seçerek kodudur. Bu sorunun yaptığı bir tıklama eylemi yapmak için javascript'i kullanabilirsiniz: http://stackoverflow.com/questions/12040615/selenium-webdriver-clicking-on-hidden-element –

+0

Geç yanıt için üzgünüm, sanırım ne olduğunu biliyorum. yanlış, daha sonra cevap verecektir, yine de teşekkürler. – PetarP

cevap

0

Tamam, ben GET STARTED düğmesi böyle inşa ettiler benim navbar yılında, yanlış açıdan kilitleme edildi ve diğer etiket daha küçük viewport için dropdown menüye sahiptir. İlk olarak doğru <li></li> etiketini seçmiyordum. selenium test etmeye başladığında, bir tablet görüntüleme tarayıcısı (≥768px) açtı ve bu durum, dropdown'u seçmem gerektiği ve üçüncü taraf kimlik doğrulamasını tıklatıp tetiklemek için bir düğme bulduğum anlamında durumu değiştirdi.

Css selector ile dropdown'u seçebilirim, bu yüzden daha sonra find_element_by_css_selector('div#navbar ul li.dropdown')'u seçtim, bundan sonra doğru sosyal düğmeyi seçtim. Tek yapmam gereken şey sosyal kimlik doğrulama işlemidir.

def test_live_societe_login_using_third_party_modal(self): 
    """TODO: Docstring for test_live_societe_login_third_party_modal. 
    :returns: return modal for third party authentication 

    """ 
    dropSelect = WebDriverWait(self.browser, 20).until(
     lambda browser: (self.browser.find_element_by_css_selector('div#navbar ul li.dropdown'))) 
    dropSelect.click() 
    twitter_choice = dropSelect.find_element_by_id('twitter_login') 
    twitter_choice.click()