FirefoxDriver webdriver.load.strategy instabile findelemente holen elemente von der falschen seite

Ich verwende FirefoxDriver in einer Anwendung, die sich schnell durch mehrere ähnliche, aber nicht identische Seiten bewegt. Um die Ausführung zu beschleunigen (ich muss FF verwenden), setze ich die Eigenschaft webdriver.load.strategy auf 'unstable'. Dies beschleunigt zwar die Dinge, indem Seiten nicht vollständig geladen werden, aber ich habe einen sehr seltsamen Fehler gefunden.

Bei der Prüfung der Datei mit der Liste der Seiten und den darauf enthaltenen Daten stellte ich fest, dass einige Seiten mit den falschen Daten abgeglichen wurden. Beim Debuggen funktionierte alles einwandfrei, aber sobald ich das Programm einige Seiten lang laufen ließ, wurden die Daten wieder von der falschen Seite abgerufen. (Zur Verdeutlichung, wenn ich zum Beispiel adriver.get(www.google.com) , gefolgt vondriver.get(www.stackoverflow.com)und dann tundriver.findElements() Um den Seitentitel von StackOverflow zu erhalten, wird "Google" zurückgegeben.)

Bei genauer Betrachtung des Browsers stellte sich heraus, dass die URLs im URL-Feld nicht mit den tatsächlich angezeigten Seiten übereinstimmen. Die URLs änderten sich viel schneller als die Seite. Ich vermute, dass der Treiber nicht wartet, bis die Seite vollständig geladen ist, bevor er findElements aufruft, und daher Elemente von der vorherigen Seite erhält, die dieselben Klassennamen haben.

Dies ist in Anbetracht dessen, was webdriver.load.strategy 'stable' tun soll, sinnvoll, aber ich habe ein Wait für ein Element auf der Seite festgelegt und es scheint nicht zu warten. Kann es sein, dass jede Seite das gleiche Element hat, das Element also bereits sichtbar war? Ich kann nicht auf etwas anderes warten, da alle Seiten das gleiche Setup haben - es ist nur der einzelne Text, der sich unterscheidet, und ich weiß nicht, was das im Voraus sein wird.

Hat jemand dieses Problem festgestellt? Stimmt meine Annahme, was das Problem verursacht? Kann ich irgendetwas dagegen tun, ohne die Strategie für instabiles Laden zu entfernen?

Danke, bsgBEARBEITEN Ich füge Code hinzu, obwohl der Code perfekt funktioniert, wenn webdriver.load.strategy 'stable' nicht gesetzt ist.

for(String url : urllist)
{
  driver.get(url);
  WebElement header = (new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.tagName("h1")));
  elements = driver.findElements(By.className(elementclassname));
}

Beachten Sie, dass es auf jeder Seite ein h1 und mehrere Elemente mit class = elementclassname gibt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage