Die Positionierung der Seitenelemente ist das Wichtigste bei der Automatisierung, und Selenium WebDriver bietet viele Methoden für die Elementpositionierung. Die Tester sollten in verschiedenen Positionierungsmethoden beherrschen. Die einfachste und stabilste Positionierungsmethode wird verwendet.
Inhalt lesen
Automatisierte Testschritte
Testen Sie bei automatisierten Tests den üblichen Betrieb von Seitenelementen des Programms
1. Suchen Sie das Webseitenelement und weisen Sie es einem Speicherobjekt zu (WebElement) zu, die es sich um ein Speicherobjekt handeln (Webelement).
2. Operationen auf Objekten, die Seitenelemente speichern, z. B.: Klicken Sie auf den Link, geben Sie Zeichen in das Eingabefeld usw. ein.
3.. Überprüfen Sie, ob die Elemente auf der Seite die Erwartungen erfüllen
In diesen drei Schritten können wir den Betrieb eines Seitenelements abschließen, und das Finden des Seitenelements ist ein sehr wichtiger Schritt. Das Seitenelement kann nicht gefunden werden und kann später nicht erfolgen
Die praktische Komplexität der Webseiten -Technologie macht es schwierig, eine große Anzahl von Seitenelementen zu lokalisieren. Die Leute wissen oft nicht, wie sie es lokalisieren sollen.
Komplette Standortmethode
Definieren Sie ein Webseitenelement mit der Findelement -Funktion des Webdriver -Objekts
Verwenden Sie die Funktion "FindElements", um mehrere Elemente einer Seite zu lokalisieren
Die gezielten Seitenelemente müssen mithilfe von Webelement -Objekts für die nachfolgende Verwendung gespeichert werden
Die häufig verwendeten Methoden zum Auffinden von Seitenelementen sind wie folgt, sortiert nach Empfehlung
Positionierungsmethode | Beispiel für Java -Sprache |
ID -Positionierung | triver.Findelement (by.id ("Wert der ID")); |
Namenspositionierung | Driver.Findelement (von.name ("Name Value")); |
Alle Textpositionierung von Links | triver.Findelement (von.linktext ("All Text of the Link")); |
Eine Textpositionierung von Links | triver.Findelement (von.PartiallinkText ("Teiltext des Links")); |
CSS -Positionierung | Driver.Findelement (von.cssselector ("CSS -Ausdruck")); |
XPath -Positionierung | Driver.Findelement (von.xpath ("XPath Expression")); |
Klassenname Positionierung | Driver.Findelement (by.className ("Klassenattribut")); |
Tagname -Tag -Name Targeting | triver.Findelement (von.tagname ("tagname")); |
JQuery -Methode | Js.Executescript ("return jQuery.find (" jQuery Expression ")")) |
Wie man lokalisiert
Bei der Verwendung von Selenium WebDriver für die Elementpositionierung wird die Methode für FindElement- oder Findelemente normalerweise verwendet, um die By -Klasse zu kombinieren, um Elementgriffe zum Lokieren von Elementen zu finden
Die Methode findelement () gibt ein Element zurück. Wenn nicht gefunden, wird eine Ausnahme ausgelöst.
Die Methode findElements () gibt mehrere Elemente zurück. Wenn nicht gefunden, wird ein leeres Array zurückgegeben und keine Ausnahme wird ausgelöst.
So wählen Sie eine Positionierungsmethode aus
Die Strategie besteht darin, eine einfache und stabile Positionierungsmethode zu wählen.
1. Wenn das Seitenelement ein ID -Attribut hat, versuchen Sie, ID zu finden, um es zu finden. Wenn nicht, wählen Sie eine andere Positionierungsmethode
2. CSSELECTOR wird schnell ausgeführt, empfohlen
3. Bei der Positionierung von Hyperlinks können Sie LinkText oder partiallinkText in Betracht ziehen. Es ist jedoch zu beachten, dass sich der Text häufig ändert, sodass es nicht empfohlen wird, ihn zu verwenden.
4. XPath hat die leistungsstärkste Funktion. Die Ausführungsgeschwindigkeit war zu dieser Zeit langsam, da Sie das gesamte DOM finden mussten. Versuchen Sie also, sie so wenig wie möglich zu verwenden. Wenn es wirklich keinen Weg gibt, verwenden Sie XPath
Elemente nach ID finden: by.id ()
Die am meisten empfohlene Möglichkeit, Elemente über die ID der Seitenelemente zu finden. W3C Standard empfiehlt, dass Entwickler eindeutige ID -Attribute für jedes Seitenelement bereitstellen.
Sobald ein Element ein eindeutiges ID -Attribut angegeben ist, ist es einfach, das Element bei automatisierten Tests zu lokalisieren. Die ID des Elements wird als bevorzugtes Identifikationsattribut verwendet, da es sich um die schnellste Identifikationsstrategie handelt.
Baidu Homepage als Beispiel, der HTML -Beispielcode des Suchfelds lautet wie folgt, seine ID ist KW
<Eingabe type = "text" autocplete = "off" maxLength = "100" id = "kw" name = "wd">
Der HTML -Beispielcode für das Suchstastelement "Baidu" lautet wie folgt. Die ID lautet SU
<Eingabe type = "Senden" id = "su" value = "baidu">
Java -Beispielcode zum Suchen von Elementen nach ID in Selenium/Webdriver ist wie folgt
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.baidu.com"); Webelement SearchBox = Driver.Findelement (by.id ("kw")); Searchbox.Sendkeys ("Little Tank Blog Park"); Webelement SearchButton = Driver.Findelement (by.id ("su")); SearchButton.submit (); Driver.close ();Elemente nach Namen finden: von.name ()
Wenn Sie als Beispiel das Homepage -Suchfeld von DouBan.com nehmen, lautet der HTML -Code des Suchfelds wie folgt, sein Name lautet: q: Q.
<Eingabe type = "text" autocplete = "off" name = "q" placeholder = "Bücher, Filme, Musik, Gruppen, Stationen, Mitglieder" size = "12" maxLength = "60">
Der Java -Code in Webdriver, um nach dem Namen nach Suchfeldern auf DouBan HomePage zu suchen, lautet wie folgt:
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.douban.com"); Webelement SearchBox = Driver.Findelement (von.name ("q")); Searchbox.Sendkeys ("kleiner Tank"); Searchbox.submit ();Suchen Sie Elemente von Tagname: by.tagname ()
Bei der Suche nach Elementen über TagName werden mehrere Elemente zurückgegeben. Daher ist FindElements () erforderlich.
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.cnblogs.com"); Liste <NEWElement> buttons = driver.Findelements (von.tagname ("div")); System.out.println ("Schaltfläche:" + buttons.size ());Hinweis: Wenn Sie TagName verwenden, sollten Sie beachten, dass der Tagname vieler HTML -Elemente gleich ist.
Zum Beispiel ein Radierkästchen, ein Kontrollkästchen, ein Textfeld, das Kennwort. Diese Element -Tags sind alle eingegeben. Zu diesem Zeitpunkt kann der Tagname allein die gewünschten Elemente nicht genau erhalten. Sie müssen auch das Typattribut kombinieren, um die gewünschten Elemente herauszufiltern.
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.cnblogs.com"); Liste <NEWELEMENT> BLAPONS = DRAVER.FINDELEMENTS (by.tagname ("input")); für (WebElement WebElement: Buttons) {if (webelement.getAttribute ("type"). Equals ("text") {System.out.println ("Eingabetext ist:" + webelement.getText ()); }}Finden Sie Elemente nach Klassenname
Wenn der HTML -Code seines Suchfelds als Beispiel Taobaos Homepage -Suche durchführt, lautet der HTML -Code wie folgt:
<Eingabe automatisch
Der Java -Beispielcode lautet wie folgt
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.taobao.com"); Thread.Sleep (15000); Webelement SearchBox = Driver.Findelement (by.className ("Search-Combobox-Input"); Searchbox.Sendkeys ("Down Jacke"); Searchbox.submit (); Hinweis: Wenn Sie ClassName zum Suchen von Elementen verwenden, begegnen Sie manchmal a
Elemente nach linkText von.linktext () finden;
Positionieren Sie Elemente direkt durch Textinformationen zum Hyperlink: z.
<a href = "https://passport.baidu.com/v2/?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f" name = "tj_login" onclick = "return false;
Der HTML -Code ist wie folgt
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.baidu.com"); Webelement loginlink = driver.findelement (by.linkText ("login")); loginLink.click ();Elemente von partiallinkText finden ()
Diese Methode ist eine verbesserte Version der vorherigen Methode. Wenn Sie nur mit einigen Schlüsselwörtern übereinstimmen möchten, können Sie diese Methode verwenden, um Elemente über einen Hyperlink -Text zu finden.
Der HTML -Code ist wie folgt
Webdriver Driver = new FirefoxDriver (); Driver.get ("http://www.baidu.com"); Webelement LoginLink = Driver.Findelement (von.PartiallinkText ("log")); loginLink.click ();HINWEIS: Wenn Sie diese Methode verwenden, um zu finden, kann das Problem verursacht werden, wenn Sie nicht wissen, dass ein Hyperlink "usw." enthält. Die Findelement -Methode gibt nur das erste gefundene Element zurück und gibt nicht alle Elemente zurück, die den Kriterien entsprechen.
Wenn Sie alle Elemente erhalten möchten, die den Kriterien entsprechen, können Sie nur die Findelements -Methode verwenden.
Die oben genannten sind die Informationen zur Positionierung der Java -Selen -Elemente. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung!