私は現在、Django/TDDの本の紹介をしています。私はStaleElementReferenceExceptionをヒットしてしまいました。私は周りにグーグルし、私のエラーの解決策のためにStackOverflowを検索してきたが、私はそれを回避することができませんでした。次のように私の関連するコードは、次のとおりSeleniumでこのStaleElementReferenceExceptionを処理するにはどうすればよいですか?
functional_tests.py
inputbox.send_keys(Keys.ENTER)
self.browser.implicitly_wait(3)
table = self.browser.find_element_by_id('id_list_table')
#rows = table.find_elements_by_tag_name('tr')
rows_ref = lambda: table.find_elements_by_tag_name('tr')
#self.browser.implicitly_wait(3)
foundBuy = False
for row in rows_ref():
self.browser.implicitly_wait(3)
rows_text = row.text
if (rows_text == '1: Buy peacock feathers'):
foundBuy = True
break
if not (foundBuy):
self.fail('Could not find "1: Buy peacock feathers" in rows\' text')
#self.assertIn('1: Buy peacock feathers', [row.text for row in rows_ref()])
エラーコードの「rows_text = row.text」ラインに上記のコードで起こります。私の元のコードでは、コメントアウトされたself.assertIn文が一番下にあります。
home.html
<html>
<head>
<title>To-Do lists</title>
</head>
<body>
<h1>Your To-Do list</h1>
<form method="POST">
<input name="item_text" id="id_new_item" placeholder="Enter a to-do item"/>
{% csrf_token %}
</form>
<table id="id_list_table">
{% for item in items %}
<tr><td>{{ forloop.counter }}: {{ item.text }}</td></tr>
{% endfor %}
</table>
</body>
</html>
本は私がコメントアウトされて入力している元のコード(マイナス1 implicity_wait)。前回この本を読んでいても、コードは問題なく動作しましたが、私はこのStaleElementエラーをノンストップにしていて、過去に到達する方法を見つけられませんでした。誰でも何か提案がありますか?