Für eine Web GUI Testautomatisierung muss ich unser Framework so anpassen, dass es möglich ist die PDF Dokumente im Internet Explorer / FireFox Adobe PlugIn auszulesen. In einem ersten Schritt würde es reichen die Dokument abzuspeichern. Was ich nicht möchte, ist, dass ich das GUI des Reader automatisier. Mir ist auch klar, dass es auch über die Klassen HttpReader, HttpResponse (ich glaub die heissen so) möglich ist, bei Ajax Calls wird es ein bisschen komplizierter, aber ich denke, dort würde ich schon eine Lösung finden. Jedoch will dies mein Vorgesetzter nicht, er besteht auf die GUI Automation. Hat jemand von euch evtl. schon mal so ein Problem gelöst? Wenn ja wie? Hat jemand Erfahrung mit dem Adobe SDK und könnte mir evtl. ein Hint liefern, welchen ich weiterverfolgen könnte.
also wenn es darum geht Website GUIs zu testen kann ich dir WatiN empfehlen. Unterstützt Firefox, IE und auch ajax calls. Es gibt auch ein WaitN Recorder mit denen du Macros aufzeichnen kannst - Mit diesem habe ich aber weniger Erfahrung.
Falls ich am Thema vorbei sein sollte, schreib einfach ein Kommentar. Zur Zeit weiß ich nicht was du mit dem Adobe SDK machen möchtest und ob ich dich richtig verstanden habe.
Update Ich habe einen Link gefunden, in dem beschrieben wird wie man mit WatiN testen kann, ob ein PDF geöffnet wurde: Hier klicken
Update 2 Da ich durch deine Kommentare nun verstanden habe was du machen möchtest, hoffe ich das dir dieses PDF als Anleitung dienlich ist. Es beschreibt, wie du eine JavaScript-Bridge für das PDF Objekt schreiben kannst, um Befehle an das Plugin zu senden.
In diesem PDF ab Seite 10 wird die JavaScript API beschrieben. Dort habe ich auch eine SaveAs Methode für das Document Object gefunden.
Evt. ist es dir möglich für deine Tests die PDFs in so ein zu betten, das du mit der javascript api die save operation durchführen kannst.
Watin haben wir bei uns im Einsatz und kenne es mehr oder weniger auswendig, jedoch werden wir es in naher Zukunft durch ein anderes Automatisierungstool ersetzen. Da im Watin Projekt relativ wenig geht. Auch diesen Ansatz habe ich angeschaut und mit dem HttpRequest weiter entwickelt, und dann das PDF Dokument gestreamt. Jedoch funktionierte dies nur Zeitweise. Manchmal konnte mit ShDocVW.dll das Plugin nicht gefunden werden, was nicht so schlimm war. Richtig mühsam wird/wurde dieser Ansatz, wenn Ajax im Einsatz ist, d.h. du hast keine Ahnung wie die eigentliche PDF Url ist und ich hatte/habe keine Ahnung wie ich die Response eines Ajax Posts abfangen kann. Hierbei spielt noch ein anderes Problem mit, in unseren Webapplikation kommen diverse Ajax Frameworks zum Einsatz, z.b. ExtJs2 und jQuery in diversen Versionen. Aber im Grunde geht es darum, nach einem Post Befehlt, öffnet sich im IE in einem separaten Fenster das PDF im Plug In. Nun möchte ich das Plugin anzapfen und das PDF automatisiert abspeichern. Ich möchte das Adobe Reader unter keinen Umständen automatisieren.
Am liebsten würde ich dies mit HttpRequest implementieren, jedoch müsste dann auf der Webseite ein Javascript zur Verfügung stehen, dass ich Invoken könnte um die Ajax generiete Url abfragen könnte, leider gibt es grössere Hürden zu nehmen. Nebst dem Vorgesetzten, würde so ein Feature kein Geld einbringen, und deshalb hätte es Prio 0 und würde deshalb nie entwickelt.
Ok hab grade Kabelsalat im Kopf: 1) Es öffnet sich ein PDF in einem NEUEN Browserfenster 2) Im neuen Browserfenster wird das PDF im Plugin dargestellt 3) Du willst das PDF abspeichern, aber dafür nicht das Plugin ansprechen
Nun stellt sich mir die Frage: Was genau willst du testen? Ob das PDF im Browser angezeigt wird? Ob das Adobe Plugin richtig funktioniert sollte nicht dein Problem sein. Warum willst du das PDF Speichern? Und warum muss es dazu erst geladen werden. Imho sind das 2 unterschiedliche tests: anzeigen / speichern. Gruß
Du hast bis auf Punkt 3 alles richtig verstanden. Schlussendlich muss der Inhalt des PDF getestet werden, dies ist jedoch nicht das Problem. Ich möchte das PlugIn ansprechen über die API und das Dokument welches angezeigt wird abspeichern. Nur habe ich keine Ahnung wie.
Ein Plugin welches ohne User Interaktion Dateien vom Webserver auf die lokale Platte speichern kann wäre security-technisch - sagen wir - suboptimal. Ich hoffe dass ist so nicht machbar (vielleicht habe ich auch Deine Anforderung falsch verstanden)
Gruss
Daniele