So finden Sie ein dynamisches element mit selenium webdriver?
Ich wollen suchen Sie ein element durch seine id in meine Seite das ist ein text Feld wo ich einen Namen eingeben.
So das element ist :
<input type="text" id="a110_name" name="name" maxlength="255">
Ersten mal, mein test gut funktioniert.
Wenn ich einen loop klicken Sie erneut auf das element, das Selen nicht finden, da die id sich geändert hat.
ex: die id ändert sich jedes mal, wenn ich Sie auf es.
<input type="text" id="a110_name" name="name" maxlength="255">
<input type="text" id="a120_name" name="name" maxlength="255">
mein code:
driver.findElement(By.id("a110_name")).sendKeys("test");
Wie kann ich dieses problem beheben?
- Ich beschloss, dass ich mit //input[contains(@id,'name')]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut zu hören, dass Sie haben es gelöst mit Hilfe von XPATH. Lösen können Sie dieses mithilfe von CSS-locator unter:
Wir haben die Verwendung von XPATH ist "enthält" - Schlüsselwort mit Vorsicht, in einigen Fällen könnte es passen einige andere element. Wenn Sie mehr Komfort XPATH, besser
//input[ends-with(@id,'_name')]
Identifizieren Element mit Text
Wenn die dynamischen Elemente haben bestimmte Muster, um Sie, dann können wir auch JavaScript-Funktionen wie "beginnt mit" oder "enthält" in unserem element locators zu trennen, der dynamische Teil des locator-aus statischen Teil.
Zum Beispiel, im Falle von Id Beispiel, die Sie zur Verfügung gestellt, wir können 'enthält' - Funktion, um Zugriff auf diesen locator-unabhängig von dessen dynamischen Teil.
XPath: //input[contains(@id, '_name')]
CSS zu verwenden, das funktioniert auch:
input[id *=_name]
Dies bedeutet: wenn es enthält, '_name'