Ich schreibe einen Selenium-Test in PHP, um die Leistung einer Webanwendung in Firefox zu überprüfen. Ich möchte dies als Basis für den Vergleich verschiedener Leistungsverbesserungen verwenden (Upgrade von JQuery, PHP 5.3 usw.). Die Web-Anwendung ist sehr AJAX-intensiv und bisher habe ich nur auf ein Problem gestoßen.Selenelement nicht gefunden
Ich habe einen AJAX-Aufruf, der Inhalt in eine vorhandene div lädt. Um zu testen, ob der Anruf abgeschlossen ist ich die folgende Zeile Code verwenden:
$selenium->waitForCondition('$(\'div[id="divId"]\').height() > 100', $timeout);
Dies funktioniert, wie ich erwartet habe, aber wenn ich versuche, in jeden Eingang zu geben in die div geladen, Selen führt den Fehler „Element Eingabe [@ id = "EingabeID"] nicht gefunden ".
Ich habe überprüft, dass die ID für die Eingabe korrekt ist, und ich habe versucht, mit anderen Eingabeelementen, die innerhalb der Div geladen sind und keiner von ihnen funktioniert. Ich habe auch versucht, einen Schlaf (30) hinzuzufügen, so dass ich sicher bin, dass die Elemente im DOM und auf dem Bildschirm sind, aber wieder machte es keinen Unterschied.
Ich bin wirklich an diesem Punkt fest und kann nicht weitermachen, bis ich dieses Problem gelöst habe. Jede Hilfe wird sehr geschätzt.
Danke, James Armes
Nummer 2 mein Problem hier behoben. Soweit Nummer 1 betroffen ist, scheint es nicht so zu funktionieren, wie ich es erwartet hatte. Ich überprüfe die Höhe, weil das div bereits Kinder hat, genauer gesagt eine Tabelle. Der AJAX-Aufruf fügt der Tabelle Zeilen hinzu (ersetzt sie durch eine neue mit derselben ID). Irgendeine Idee, wie ich das besser erkennen könnte? Ich habe über WaitForElement * -Funktionen gelesen, aber ich sehe sie nicht für mich verfügbar. – JamesArmes
JamesArmes: Wenn der Aufruf Zeilen hinzufügt, speichern Sie einfach die Anzahl der Zeilen, bevor Sie den Anruf tätigen. Vergleichen Sie dann die Anzahl der Zeilen und sehen Sie, ob sie sich geändert hat, also etwa wie $ ("# tableId tr"). Size()> [alte Größe hier] '. –
John Feminella: Ich habe das versucht, aber es scheint nur die Ausführung fortzusetzen, als ob die Bewertung sofort als richtig bewertet wurde. Ich habe sogar versucht, einen Literalwert anstelle einer Variablen einzugeben, von der ich wusste, dass sie mehr als die ursprüngliche Tabelle und weniger als die neue war, ohne Unterschied. Nur um zu sehen, was passieren würde, setzte ich es auch auf eine Zahl, die viel höher war, als jeder Tisch es hätte, und es setzte einfach die Ausführung fort. – JamesArmes