2016-10-28 3 views
0

Wir haben HTML-Code, der Elemente hat, die erweitert oder reduziert werden können (je nachdem, was sie derzeit sind). Sie können nur auf einer Ebene erweitert werden. Es sieht ein bisschen wie dieseElement Aktualisierung in @FindBy mit Selenium und Java

<a href = "#" title = "Expand" id = ...>Row 1 </a> 
<a href = "#" title = "Expand" id = ...>Row 2 </a> 
<a href = "#" title = "Collapse" id = ...>Row 3 </a> 
<a href = "#" id = ...>Subrow 3.1 </a> 
<a href = "#" id = ...>Subrow 3.2 </a> 
<a href = "#" title = "Expand" id = ...>Row 4 </a> 
<a href = "#" title = "Collaps" id = ...>Row 5 </a> 
<a href = "#" id = ...>Subrow 5.1 </a> 
<a href = "#" id = ...>Subrow 5.2 </a> 

Es gibt viele mehr, und es ist ein wenig komplizierter als das, aber Sie erhalten das Bild. Mit Seitenobjekt habe ich eine Liste

@FindBy(xpath = "//a[contains(@title, 'Expand') or contains(@title, 'Collapse')]") 
private List<WebElement> expandCollapseElements 

Und dann eine Methode, um sich zum Beispiel erweitern:

public void expand() { 
    for (WebElement ele : expndCollapseElements) { 
     if (ele.getAttribute("title").equals("Expand")) { 
      ele.click(); 
     } 
    } 
} 

Im eigentlichen Code auch ich warten wollte, bis der Titel so geändert Ich weiß, es hat funktioniert. Wie auch immer, das Problem ist, dass sobald ich ein Element expandiere, alle darunterliegenden Elemente scheinbar abgestanden sind. Ich weiß, wenn Sie @FindBy verwenden, wird das Element jedes Mal neu gefunden. Aber ich frage mich, wann das Element aufgefrischt wird. Es scheint, als ob es nur einmal am Anfang der Schleife gemacht wurde. Ist das wahr? Wann wird die Elementliste aktualisiert? Und gibt es einen besseren Weg, dies zu tun? Ich habe versucht, eine neue Liste mit der Liste zu erstellen und sie umzukehren, was irgendwie funktioniert hat, aber nicht wirklich. Die Angelegenheit wird durch die Tatsache noch komplizierter, dass diese Zeilen in ihrem eigenen scrollbaren div angezeigt werden, wo Sie sakollen müssen, um einige der Elemente zu sehen. Also irgendwelche Gedanken?

Antwort

0

Vorschlag: Das ist der Unterschied zwischen foreach und for. Versuchen Sie nur "For-Schleife" zu verwenden.

+0

Ich denke, das eigentliche Problem ist, dass diese Elemente in einem Fenster mit einer Bildlaufleiste sind und wenn ich eine erweitern, werden einige andere Elemente unterhalb (oder oberhalb) der Ansicht im Bildlauffenster verborgen, so dass sie nicht mehr gefunden werden . Gibt es eine Möglichkeit, auf Knoten außerhalb eines Div-Scroll-Fensters zuzugreifen? – Tony

Verwandte Themen