2016-12-06 3 views
1

Ich verwende Windows.Forms.SendKeys.SendWait mit dem nativen Windows-Dialog beim Hochladen eines Bildes zu interagieren.C# Selenium Webdriver Interaktion mit nativen Bildupload-Dialog mit SendKeys.SendWait funktioniert nicht auf TeamCity

ich die Upload-Button klicken WebDriver verwenden, dann gehen:

SendKeys.SendWait("^A"); //Highlight content so it can be overwritten 
SendKeys.SendWait(path); 
SendKeys.SendWait(@"{Enter}"); 

große Werke, wenn ich es lokal auf meinem PC ausführen, wird der Test jedoch nicht auf dem Teamcity Agenten läuft (Ich habe viele andere Tests, die OK ausführen). Es schlägt fehl, da es scheint, dass der native Dialog nie erscheint oder wenn er es tut, kann er nicht mit ihm interagieren.

Nicht sicher, was passiert, da der gesamte Test-Agent-Prozess im Hintergrund läuft und ich nicht sehen kann, was es tut - ich kann Screenshots mit dem Webdriver machen, aber native Dialoge werden sowieso nicht erfasst.

Ich habe versucht, den Team City Test Agent Windows-Dienst zu konfigurieren (ändern Sie die Anmeldeeinstellungen, um die Interaktion mit dem Desktop zu ermöglichen), aber das hat nicht funktioniert. Scheint, es ist einfach nicht in der Lage, damit zu interagieren ... irgendwelche Ideen, wie das funktioniert?

Antwort

1

Um eine Datei mit Selenium hochzuladen, sollten Sie Webdriver SendKeys direkt an das Eingabeelement verwenden, das den Pfad benötigt (nicht Forms.SendKeys). Siehe this example.

Hinweis: Sie müssen vermeiden, auf die Schaltfläche zu klicken, die den Dialog öffnet.

+0

danke für die Antwort und den Link zu dem Beispiel. Scheint so, als ob dies die einzige Möglichkeit wäre, das zu funktionieren. * Allerdings * würde ich argumentieren, dass dies nicht wirklich ein guter UI-Test ist. Der Benutzer würde nicht so mit der Seite interagieren. So könnte beispielsweise die Upload-Schaltfläche beschädigt sein und der Benutzer könnte möglicherweise keine Fotos hochladen, aber der Test würde trotzdem bestehen. – Xena

+0

Nun, Sie haben einen Punkt, aber Ihre Alternative ist immer ein Benutzer angemeldet und Bildschirm entsperrt, und ändern Sie Ihre Team City Agent als Prozess anstelle von einem Service laufen ... – Moshisho

+0

Dies ist wahr - nicht die Mühe wert. In meinem Test überprüfe ich zuerst, ob die Upload-Schaltfläche mindestens sichtbar und aktiviert ist * dann * fahre mit deiner Lösung fort. Es funktioniert auf Teamcity! Vielen Dank. – Xena

Verwandte Themen