| 

.NET C# Java Javascript Exception

4
Hallo,

ich versuche in einer aspx Form einen weitern IE Browser aufzurufen um diesen dann Fernzusteuern.
Wie Ihr seht habe ich schon einiges ausprobiert komme aber leider nicht weiter.

Leider schaffe ich es nicht den STA modus einzuschalten habt Ihr noch eine idee.

der Tip mit der config.app von WatiN... kommt leider auch nicht durch..

Vielen Dank Olaf

//[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true,
//SelfAffectingThreading = true)]


//[TestFixture]
//[TestFixture(System.Threading.ApartmentState.STA)]

[STAThread]
protected void Page_Load(object sender, EventArgs e)
{

// Thread.CurrentThread.SetApartmentState(System.Threading.ApartmentState.STA);
// -- hirzu sagt der compiler Der angegebene COM-Apartmentzustand konnte nicht festgelegt werden.
using (var browser = new IE("http://www.google.com/"))
{
Assert.IsTrue(browser.ContainsText("WatiN"));
}


}

config.app
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->

<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestFixture" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
</configuration>
News:
19.11.2011
OlafS 210 1 6
4 Antworten
1
Hallo Olaf,

Wenn Du ein neues Browserfenster beim Client aufmachen willst, hast Du vermutlich mehr Erfolg, wenn Du Javascript verwendest.
Wenn Du mit WatiN ein neues Browserfenster aufmachen willst, muss/sollte Watin in einem eigeständigen Prozess laufen. Entweder von einem NUnit Prozess oder einer eigenständigen Exe. Ausserdem muss Dir bewusst sein, wenn Du Watin aus einer ASPX Webseite aufrufst und du irgendwo eine MessageBox hast, nichts mehr geht.
D.h. Du musst manuell auf diese Box klicken. Es gibt Tricks wie Du solche Sachen umgehen kannst, z.B Backgroundworker, aber das ist nicht empfehlenswert, du musst dann immer wissen, wann so eine Messagebox erscheint.

Und falls Du es doch hinkriegen würdest, würde das Fenster auf Webserver aufgehen und nicht bei Clienten, was im Grunde niemanden etwas nützt, ausser dem Webserver Admin.

Evtl. kannst Du mehr Infos geben, was Du genau Test-Automatisieren willst.

Gruss
Daniele
21.11.2011
CodingMan 168 5
0
Hallo,
erst ein mal Danke für Deine ausführliche Antwort.

Ich möchte unterschiedliche Daten in ein Formular übergeben,
wobei ich vorher eine Anmeldung am Server herstellen muß,
ich habe die Anwendung als Winform komplett Fertig.
Nur möchten meine Kollegen diesen service auch gerne nutzen, dazu muss es halt in ASP sein.
Ich denke das sich der IE ruhig auf dem Server öffnen kann, sofern ich es dann schaffe das sich gleichzeitige Anfragen nicht kollidieren und ich die threads ordentlich geschlossen bekomme.

Grüsse
olaf
21.11.2011
OlafS 210 1 6
0
Hallo Olaf,

Ich stehe ein bisschen auf dem Schlauch, denn ich steige nicht ganz durch was du machen willst. Aber lassen wir das vorerst.

Damit ein IE sich auf dem Server öffnet musst Du sowieso als User eingeloggt sein, ansonsten geht dies nicht. D.h. es muss möglich sein einen graphischen Prozess zu starten. Im ausgeloggten Modus ist dies nicht möglich. Bei Watin ist es so, dass immer ein IE Prozess laufen muss oder durch Watin gestartet wird. Damit dies funktioniert, musst Du eingeloggt sein oder Du muss das Programm über einen Windows Service unter einem User starten.

Wenn ich dich annähernd richtig verstanden, habe, hast Du ein Fatclient (Winform) welcher mit dem Server kommuniziert, oder Du hast diese Applikation auf dem Server installiert?

Hast Du dir evtl. schon mal Gedanken gemacht, einen Webservice zu programmieren oder über die Klassen WebClient oder HttpRequest usw. bzw. über WCF zu kommunizieren?

Von aspx habe ich sehr wenig Ahung, aber soviel ich weiss, glaube ich nicht, das aspx auf die COM Zugriff haben.

Gruss
Daniele
21.11.2011
CodingMan 168 5
0
Hallo,
ich habe vergessen zu sagen das ich mein Winform auf meinem localen Rechner am laufen habe!

Deine Idee komplett über HttpRequest zu gehen habe ich versucht, aber aufgrund zu wenig info und offenen erklärungen bleiben lassnen , hast Du da einen guten link?
am besten in Deutsch.
Ein Webservice wird dann wohl das anzustrende sein, damit müste ich doch alle bedingungen erfüllen können oder?

Gruß olaf
21.11.2011
OlafS 210 1 6

Stelle deine Test-Frage jetzt!