Ich gehe gerade durch ein Intro zu Django/TDD Buch und ich habe eine StaleElementReferenceException getroffen und stecken geblieben. Ich habe gegooglt und nach StackOverflow gesucht, um eine Lösung für meinen Fehler zu finden, aber ich konnte es nicht umgehen. Mein entsprechender Code ist wie folgt:Wie mit dieser StaleElementReferenceException in Selen umzugehen?
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()])
Der Fehler tritt in dem obigen Code auf der "rows_text = row.text" Codezeile. In meinem ursprünglichen Code ist es in der auskommentierten Anweisung von self.assertIn am unteren Rand aufgetreten.
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>
Der ursprüngliche Code das Buch mich (minus ein implicity_wait) betreten hat, wird als Kommentar gekennzeichnet. In meiner vorherigen Zeit, die durch dieses Buch ging, funktionierte der Code nicht, aber ich habe diesen StaleElement-Fehler nonstop bekommen und kann keinen Weg finden, darüber hinwegzukommen. Hat jemand irgendwelche Vorschläge?