2016-11-30 7 views
0

Derzeit mu Szenario ist so:Get get_attribute ("value"), nachdem die Seite aktualisieren

  1. senden send_keys auf ein Feld
  2. Klick in Schaltfläche "Speichern" (aktualisieren Sie die Seite nach Klick)
  3. erhalten get_attribute("value") nach Refresh der Seite

Mein Code:

def fill_twitter(self): 

     enter_twitter = "http://" + fake.text(max_nb_chars=13) + ".com" 

     twitter_field = self.find_element(*ContractorsLocators.TWITTER) 
     twitter_field.send_keys(enter_twitter) 

     self.find_element(*ContractorsLocators.SAVE_BUTTON).click() 
     time.sleep(4) 

     assert twitter_field.get_attribute("value") == enter_twitter 

Mein Fehler:

StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 

Wie kann ich die get_attribute("value") bekommen?

+0

Sie müssen wieder dasselbe Element finden, um ihren Wert als 'self.find_element (* ContractorsLocators.TWITTER) .get_attribute (" value ")' .. –

Antwort

2

StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

Die most frequent cause davon ist, dass Seite, dass das Element war Teil aktualisiert wurde, oder der Benutzer auf eine andere Seite hat navigiert weg.

Wie Sie sagen, die Seite wird aktualisiert, wenn Sie auf Speichern klicken. Daher dies zu vermeiden, müssen Sie gleiches Element (Refresh-Element) wieder finden ihren Wert, wie unten bekommen: -

assert self.find_element(*ContractorsLocators.TWITTER).get_attribute("value") == enter_twitter 
0

Wie die Seite aktualisiert bekam, sollten Sie besser den Wert des Attributs speichern, bevor das Element Stale.

bekommt
0

Um zu überprüfen, ob das Element nach der Aktualisierung der Seite sichtbar ist, verwenden Sie die explizite Funktion sleep() und prüfen Sie nach 4 Sekunden, ob die Komponente sichtbar ist oder nicht WebDriverWait.

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myDynamicElement")); 

Besuchen Sie http://selenium-python.readthedocs.io/waits.html#explicit-waits zum besseren Verständnis.