2017-08-23 15 views
0

ボタンの要素がUIに表示されないかどうかを確認しようとしています。コードは開発者によってJavaスクリプトで書かれています。私はSelenium WebdriverとPythonを使って自動化されたスクリプトを書いています。ボタンが有効になっている場合は、liタグがコードに追加されています。しかし、ボタンが無効になっている場合、ボタンのコードはUIから検査しているときに消えます(F12 - > Inspect Elements)。Pythonのボタンの可視性を確認する方法

現在、私のコードは、この

def delete_btn_disabled(self):   
     try: 
      button = self.driver.find_element(*Elements.delete_btn).is_displayed() 
      if button is True: 
       return True 
     except NoSuchElementException: 
      return False 

のように見え、私のテストケースは以下の通りです:

 if spage.delete_btn_disabled() is False: 
      print("Test passed") 
     else: 
      print("Test failed") 

は、これを処理するためのより良い方法はありますか? NoSuchElementExceptionを投げることは少し汚れているようです(私が間違っていれば私を修正してください)、私はこのタイプのコードを他のテストケースのためにも扱わなければなりません。

私はこれを見つけましたが、この問題の正しい解決策を見つけることができないようです。

何か助けていただければ幸いです。

答えて

0

.find_elements()を使用して、要素が存在するかどうかを確認します。返されるリストが空の場合、要素が存在しない(または表示されている)ことがわかります。空でない場合は、最初の要素の.is_displayed()をチェックしてください。

def delete_btn_disabled(self):   
    button = self.driver.find_elements(*Elements.delete_btn) 
    if button: 
     return button[0].is_displayed() 
    else: 
     return False 
+0

おかげで、JeffCがあります。それは働いた:) – Bubbles

0

is_displayedis_visibleに等しいていません。

ボタンがUIの外側に表示されていても、ボタンがUIから表示されていることは確認できません。したがって、それはまだクリックできません。

+0

あなたは 'EC.element_to_be_clickable'を使用してクリック可能性を検出することができます –

0

セレンは、これらの条件を期待と待機で最もよく管理します。これは、あなたの期待を満たせない場合にもタイムアウトになることを保証します。あなたはそのようvisibility_of便利なメソッドを使用して、視認性のための待ち時間を使用することができます。

from selenium.webdriver.support import expected_conditions as EC 

element = WebDriverWait(driver, 10).until(EC.visibility_of((By.ID, 'id_1'))) 

期待メソッドの完全なリストは、here.

関連する問題