Durch ist.id besser, als bei der.tagname?
War ich arbeiten Lesen von E-mails aus gmail mittels webdriver und in zwischen traf ich diese Differenz zwischen Durch.id.tagname.
Ich versuche für den Zugriff auf einen "table" mit der id ":pg". So konnte ich
- Verwenden Sie entweder Durch.id ("pg")
- ODER verwenden.tagname("Tabelle") und die Suche nach einem element mit id :pg
Hier ist der code für beide Fälle.
Durch.id:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
webDriver = webDriver.switchTo().frame("canvas_frame");
WebElement table1 = webDriver.findElement(By.id(":pg"));`
Obigen code habe ich direkt bekommen das element die id ":pg"
Durch.tagname:
WebDriver webDriver = new FirefoxDriver();
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
List<WebElement> tables = webDriver.findElements(By.tagName("table"));
for(WebElement table2: tables){
String id = table2.getAttribute("id");
System.out.println("id: "+ id);
if(id != null && id.equals(":pg")){
System.out.println("FOUND IT!!!");
}
}
Obigen code, ich finde alle Elemente mit der tagname von dem Tisch und dann sehen, welche hat die id ":pg".
Diese beiden code-snippets sind im wesentlichen das gleiche tun, aber mit verschiedenen Möglichkeiten(Durch.id oder Durch.tagname). Jedoch, das erste code-snippet verwendet.id immer gelingt, während der zweite code-snippet verwendet.tagname scheitert fast immer. (Es wird zusätzliche Wartezeit allerdings)
Warum ist diese Differenz zwischen Durch.id.tagname?
Dank,
Chris.
InformationsquelleAutor ChrisOdney | 2011-06-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
:pg
- element nicht vorhanden ist auf der Seite zunächst.Mit
By.Tag
-, Selen-wird nicht warten, bis die:pg
element.Weil
By.Id
Beispiel ist genauer, Selen wird weiterhin prüfen, ob der:pg
element vorhanden ist, bis das implizite warten (5 Sekunden) mal aus.Durch.Tag ist nicht spezifisch an allen. Auf
findElements(By.tagName("table")
Selen wird ein array zurückgeben aller Tabellen, die vorhanden sind und sofort nach dem laden der Seite. Als die:pg
element ist noch nicht anwesend ist, wird es nicht in dem array.Ihre Frage zu beantworten, ja, es ist besser, verwenden Sie
By.Id
weil:1. Es ist genauer.
2. Spart code-Zeilen
3. Kräfte Selen zu warten, bis das element zu existieren.
InformationsquelleAutor Matthew Kelly
Ist es besser Durch.Id nach Ihrer Frage.
Durch.tag ist nicht für eine bestimmte Daten, die es eigentlich sucht und liefert ein array aller Tabellen mit dem angegebenen tag-Namen, also mit id können Sie die entsprechende Ausgabe für jetzt.
Gehen für den tag nur, wenn id-ya-Klasse ist nicht angegeben, und der beste Weg sein kann Durch.cssSelector, wenn kein element gefunden wird.
Dank
InformationsquelleAutor Bhakti Shah