2016-04-14 10 views
1

私はnavbarのリンクをクリックして、私がテストする必要があるサードパーティ認証用のモーダルを起動しようとしています。私はセレンを使ってフェッチしてクリックする方法についていくつかの助けをしています。セレン&djangoテスト

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) 

は、私はすべてのアプリケーションページをテストすることができましたが、私はselenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with例外を得たこの1を打つ: これは私が

<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> 

私のテスト構造をクリックしようとしているリンクです。私はそれについてちょっと混乱しています、誰かが私にこのことを教えてくれますか、ありがとう。

+0

セレンを使用すると、隠された要素をクリックすることはできません。あなたはこの質問のようにクリックアクションを行うためにJavaScriptを使うことができます:http://stackoverflow.com/questions/12040615/selenium-webdriver-clicking-on-hidden-element –

+0

ご返事遅れて申し訳ありませんが、間違って、後で答えますが、それでも、ありがとう。 – PetarP

答えて

0

navbarに私はこのようなGET STARTEDボタン構築してきた、私はこれで間違った方法をロックして、[OK]を:1がviewport大きい方のためのボタンである、あなたは、私が2個の<li></li>のタグを持っていることがわかります

<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> 

をもう1つのタグは、viewportの場合はdropdownメニューです。最初は右の<li></li>タグを選択していませんでした。 seleniumテストを開始すると、彼はタブレットビューブラウザ(≥768px)を開き、dropdownを選択してクリックして第三者認証を開始する必要があるという意味で状況を変えました。

私はCss selectordropdownを選択することができますので、私はちょうどfind_element_by_css_selector('div#navbar ul li.dropdown')を選択し、その後私は右のソーシャルボタンを選択しました。私が今必要とするのは、社会的認証を扱うことだけです。

これは、サードパーティの認証にdropdownと社会のボタンを選択するためのコードです:

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() 
関連する問題