Ich habe über veraltete Elemente gelesen und bin immer noch ein bisschen verwirrt. Zum Beispiel wird das Folgende nicht funktionieren, richtig?Advanced Stale Elemente
public void clickFoo(WebElement ele) {
try {
ele.click();
} catch (StaleElementReferenceException ex) {
ele.click();
}
}
weil, wenn ele veraltet ist, wird es abgestanden bleiben. Am besten ist es, driver.findElement (By) zu wiederholen, aber wie Sie in diesem Beispiel sehen können, gibt es keinen xpath. Sie können versuchen, ele.getAttribute ("id") zu verwenden und das verwenden, aber wenn das Element keine ID hat, wird dies auch nicht funktionieren. Alle Methoden, die dies nennen, müssten den Versuch/Fang darum herum setzen, was möglicherweise nicht durchführbar ist.
Gibt es eine andere Möglichkeit, das Element wieder zu finden? Unter der Annahme, dass es eine ID gibt, würde die ID auch gleich bleiben, nachdem das Element veraltet ist? Was ist im WebElement-Objekt ele anders, wenn es alt wird?
(Java Eclipse)
Danke. Ich verstehe das. Es ist nur so, dass einige Methoden ein Element und keinen XPath verwenden. Und einige Methoden verwenden das Seitenobjekt @FindBy(), das dem ähnelt, was Sie sagten. Aber einige Elemente sind bis zur Laufzeit nicht bekannt (zum Beispiel muss ich ein div für ein bestimmtes Büro finden, und dann div.findBy verwenden ... Ich nehme an, wir hätten früher versuchen sollen, immer den xpath für ein Element zu kennen (oder ID oder was auch immer) – Tony
Für Methoden, die ein Element verwenden, können Sie das Element mithilfe des Locators finden und dann an die Methode übergeben. Wenn Sie Szenarien haben, in denen Sie ein Element für ein bestimmtes Büro finden müssen, Du solltest in der Lage sein, einen Locator zu erstellen, der das für dich dynamisch macht. – JeffC
Wie auch immer ... wenn du diese Antwort für hilfreich empfindest, bitte upvote. Wenn sie deine Frage beantwortet, akzeptiere sie sie bitte als Antwort ] (// stackoverflow.com/help/someone-answers) für mehr Informationen darüber, wie und warum man eine Antwort upvotet und akzeptiert. – JeffC