Wie verwenden von regex in Selen-locators
Bin ich mit selenium RC, und ich möchte, um beispielsweise alle links, die Elemente mit dem Attribut href, match:
http://[^/]*\d+com
Ich würde gerne verwenden:
sel.get_attribute( '//a[regx:match(@href, "http://[^/]*\d+.com")]/@name' )
was wieder die Liste der name-Attribut für alle links, die mit dem regex.
(oder etwas ähnliches)
Dank
- Also was nicht funktioniert, und in welcher Weise ist es nicht? Kannst du den HTML-Code (oder ein fragment davon), dass Sie ein Abgleich mit?
- Beispiel und Methode get_attribute() gibt nur ein einziges Element, nicht eine Liste. Poster Fragen, was ist das äquivalent für die Rückgabe einer Liste von Attributen, zum Beispiel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort oben ist wohl der richtige Weg, um finden Sie ALLE links, match regex, aber ich dachte, es würde auch hilfreich sein, zu beantworten, den anderen Teil der Frage, wie man mit regex in Xpath-locators. Sie müssen, benutzen Sie den regex-matches () - Funktion, wie diese:
(dies, natürlich, würde klicken Sie auf das div mit der id '=Checkboxen', oder 'id=cheANYTHINGHEREboxes')
Beachten Sie aber, dass die Spiele-Funktion wird nicht von allen unterstützt native browser-Implementierungen von Xpath (die meisten auffallend, mit diesem in FF3 wirft einen Fehler: Ungültiger xpath[2]).
Wenn Sie Probleme mit Ihrem browser haben (wie ich mit FF3), versuchen, mit Selen die allowNativeXpath("false") zum Umschalten auf die JavaScript Xpath-interpreter. Es wird langsamer sein, aber es scheint zu funktionieren mit mehr Xpath-Funktionen, einschließlich der 'Spiele' und 'endet mit'. 🙂
Können Sie mithilfe der Selenium-Befehl getAllLinks um ein array mit den ids der links auf der Seite, die Sie dann in einer Schleife durch und überprüfen Sie die "href" mit der getAttribute, die die locator-gefolgt von einem @ und dem Namen des Attributs. Zum Beispiel in Java könnte dies sein:
Eine mögliche Lösung ist die Verwendung
sel.get_eval()
und Schreibe ein JS-Skript gibt eine Liste der links. so etwas wie die folgenden zu beantworten:Selen: Ist es möglich, benutzen Sie die regexp-in Selen-locators
Hier einige Alternative Methoden, wie auch für Selenium RC. Diese sind nicht Reine Selen-Lösungen, ermöglichen Sie die Interaktion mit Ihren Programmiersprache, Datenstrukturen und Selen.
Können Sie auch bekommen HTML-Quelltext der Seite, dann regulärer Ausdruck der Quelle, um wieder eine match-Reihe links. Verwenden Sie die regex-Gruppierung zu trennen, URLs, link-text/ID, usw. und Sie können dann gehen Sie zurück zu Selen klicken Sie auf oder navigieren Sie zu.
Andere Methode ist get HTML-Quelltext der Seite oder innerHTML (über DOM-Locator) von einem Elternteil/root-element dann konvertieren Sie die HTML-zu-XML-DOM-Objekt in Ihrer Programmiersprache. Sie können dann durchqueren Sie den DOM mit den gewünschten XPath (mit regulären Ausdrücken oder auch nicht), und erhalten eine Knotenmenge, die nur die links von Interesse. Aus Ihrer analysieren die link-text/ID oder URL, und Sie können gehen Sie zurück zu Selen klicken Sie auf oder navigieren Sie zu.
Auf Wunsch, bin ich die Beispiele unten. Es sind gemischte Sprachen, da die post nicht angezeigt werden sprachspezifische sowieso. Ich bin einfach mit dem, was ich zur Verfügung hatte, zu hacken zusammen für Beispiele. Sie sind nicht vollständig getestet oder getestet, aber ich habe mit bits des Codes, bevor Sie in andere Projekte, so sind diese proof-of-concept-code-Beispiele wie würden Sie implementieren die Lösungen, die ich gerade erwähnte.