Watin Problem!

Topia

Mitglied
Hallo ich versuche mich über Watin auf eine Seite anzumelden nur dieser code entspricht genau dessen des Tutorials auf der Watin seite nur es klappt nicht wieso
Der IE Explorer öffnet sich und navigiert auch zu Seite aber er gibt nicht die Daten ein und drückt den Button wieso?:confused:
Den Verweis zur Dll habe ich auch eingefügt klappt auch alles mit den Methoden etc..
Die ID´s und byname habe ich auch kontrolliert
Code:
using System;
using WatiN.Core;

namespace WatiNGettingStarted
{
  class WatiNConsoleExample
  {
    [STAThread]
    static void Main(string[] args)
    {
      // Open a new Internet Explorer window and
      // goto the bsp website.
        IE ie = new IE("bsp");

      // Find the search text field and type Watin in it.
      ie.TextField(Find.ById("Login_email")).TypeText("bsp");
      ie.TextField(Find.ById("Login_password")).TypeText("bsp");

      // Click enter  button.
      ie.Button(Find.ByName("login")).Click();
 
      // Uncomment the following line if you want to close
      // Internet Explorer and the console window immediately.

      //ie.Close();
    }
  }
}
 
Zuletzt bearbeitet:
Hi

Sind die IDs der Element korrekt?
Wenn du uns die Adresse der Seite verraten könntest, könnten wir besser schauen wo das Problem liegt.
so oder heißt es für dich: Debuggen, schauen ob die entsprechenden Elemente gefunden wurden,...
 
Habe das problem gelöst! Man musste den SicherheitsModus des Internet Explorers ausschalten. Nun habe ich ein anderes Problem wenn ich den code in einer WIndows anwendung einfüge Form dann kommt diese fehlermeldung

Code:
Fehler	1	"Form" ist ein mehrdeutiger Verweis und kann "WatiN.Core.Form" oder "System.Windows.Forms.Form" sein.	C:\Users\dmad\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs	13	34	WindowsFormsApplication1
 
Hi

Die Meldung sagt es doch:
Du nutzt die Klasse Form, die in 2 verschiedenen Namespace vorhanden ist.
In diesem Falls, musst du den kompletten Namen inkl. Namespace angeben.
Alternativ kann für den Namespace ein Alias angelegt werden, der dann vor den Klassennamen geschrieben werden muss:
C#:
using WinForms = System.Windows.Forms;
 
Vom .NET Framework wird eine Klasse Form bereitgestellt. Diese befindet sich im Namespace System.Windows.Forms, der vollständige Name der Klasse wäre dementsprechend System.Windows.Forms.Form

Über die Direktive using System.Windows.Forms kann der Klassenname direkt ohne die zusätzliche Angabe des Namespace verwendet werden.

Wenn du eine Klasse definierst, die ebenfalls den Namen Form hat und du diesen Klassennamen verwendet, weiß der Compiler nicht welche Klasse du meinst. Woher auch?!

Um dieses Problem zu lösen hast du zwei Möglichkeiten
1. Wenn du die System.Windows.Forms.Form könntest du diese immer über den kompletten Klassennamen ansprechen, deine Form sprichst du ebenfalls über den vollständigen Namespace deiner Anwendung an, ist natürlich viel Tippaufwand und sieht nicht so schön aus.

2. Du verwendest Nicos Tipp: Hier verpasst du dem Namespace System.Windows.Forms.Form einen Alias-Namen. Nico wählte hier WinForms. Möchstest du nun die Klasse System.Windows.Forms.Form verwenden, funktioniert das nach der Alias-Definition über WinForms.Form, während du deine eigene Formklasse ohne die Angabe des Namespace ansprechen kannst.

Achtung: Es muss nicht zwingend deine eigene Klasse Form sein. Möglich ist natürlich auch, dass eine weitere Klasse Form aus einer anderen Assembly oder einem anderen Namespace verwendet wird. Dieser Namespace taucht dann aber bei den using-Direktiven auf
 
Zuletzt bearbeitet:
Wenn der Fehler kommt
an entsprechender Stelle vor den Klassennamen den Namespace schreiben
Also
C#:
System.Windows.Forms.Form frm = new System.Windows.Forms.Form();
oder für das obige Beispiel mit dem Alias
C#:
WinForms.Form frm = new WinForms.Form();
 
Zurück