ページの更新(完全な更新ではなく、JSがDOMを変更する)をトリガーするドロップダウンメニューからオプションを選択して、その選択に基づいてデータを表示するSeleniumユニットテストを作成しています。私のテストケースはPastebinでここで見ることができます
したがって、データがリロードされた後、セレンはループするためのさらなるオプションを見つけることができません。私は実際にはもうループする必要はありません。
がページの H2 要素にあるかどうかを確認するために xpath ルックアップを実行できoption.text
ましたが、失敗しました...
for option in dropdown.find_elements_by_tag_name('option'):
if self.ff.find_element_by_xpath("//h2[contains(text(), option.text)"):
pass # Employee Selected
次のコードから、この「DOM に接続」エラーを回避できる人はいますか? 基本的に、オプション[1]などを選択して、残りのテストを続行できれば理想的です。
dropdown = self.ff.find_element_by_id('employeeDatabaseSelect')
for option in dropdown.find_elements_by_tag_name('option'):
try:
option.click() # causes JS refresh which you need to wait for
except Exception, e:
print 'Exception ', e
else: sys.exit("Error: There are no employees for this employer")
print 'Dropdown: ', dropdown.getText()
WebDriverWait(self.ff, 50).until(lambda driver : driver.find_element_by_xpath("//h2[contains(text(), dropdown.getText())"))
私のスタックトレースは次のようになります。
[exec] test_process (__main__.viewEmployeeUseCase) ...
[exec] ERROR
[exec]
[exec] ===============================================================
[exec] ERROR: test_process (__main__.viewEmployeeUseCase)
[exec] ---------------------------------------------------------------
[exec] Traceback (most recent call last):
[exec] File "viewEmployeeUnitTest.py", line 43, in test_process
[exec] print 'Dropdown: ', dropdown.getText()
[exec] AttributeError: 'WebElement' object has no attribute 'getText'
[exec]
[exec] ---------------------------------------------------------------
[exec] Ran 1 test in 16.063s
[exec]
[exec] FAILED (errors=1)
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Exception Message: u'Element is no longer attached to the DOM'
[exec] Dropdown: Tearing Down!
最後Tearing Down!
は、tearDown() 関数から出力されたコメントです。