WatiN 2.1.0.1196 (12 April 2011)

This is WatiN 2.1 final, offering support for both Internet Explorer and FireFox.

This releases fully supports IE9 and does fix issues with Find.BySelector, fire-ing events in FireFox and more

For the full release notes visit http://watin.org/documentation

---------------------------------
WatiN 2.0.50.1179 (8 Februari 2011)

This is WatiN 2.0 final, offering support for both Internet Explorer and FireFox.

This release adds support for finding elements using a css selector, creating screenshots with FireFox, auto closing of dialogs on FireFox and has many stability fixes for running tests with FireFox and Win7/IE8.

For the full release notes visit http://watin.org/documentation

---------------------------------
WatiN 2.0.20.1089 (20 December 2009)

This is the first release candidate of WatiN 2.0, offering support for both Internet Explorer and FireFox

Many new features have been added and bugs have been fixed since the release of WatiN 2.0 beta 1

For the full release notes visit http://watin.org/documentation

---------------------------------

WatiN 2.0.10.928 (20 March 2009)

This is the first beta release of WatiN 2.0, offering support for both Internet Explorer, FireFox and Chrome (expirimental)

Many new features have been added and much of the functionality offered in WatiN 1.3 for IE is now also available for FireFox.

For the full release notes visit http://watin.org/documentation

---------------------------------

WatiN 2.0.2.790 (11 Februari 2009)

This is the third CTP release of WatiN 2.0, offering support for both Internet Explorer and FireFox

Changes in this release:

- Implemented support on Mozilla.Frame to get access to elements inside the document of a Frame
- Implemented support on Mozilla.Frame to get access to elements inside the document of an IFrame
- Implemented Eval on Mozilla.Document (= FireFox and Frame) and added to the IFrame interface

Fixed bug(s):
- Form.Submit didn't wait for a possible postback and page load.

---------------------------------

WatiN 2.0.1.754 (15 Januari 2009)

This is the second CTP release of WatiN 2.0, offering support for both Internet Explorer and FireFox

Changes in this release:

- Works with FireFox 3.x and FireFox 2.x (both jssh.xpi plug-ins are included in the Mozilla directory)
- Greatly improved performance and stability when running tests with FireFox

Fixes reported bugs:
  * Problem with setting ActiveElement in FF 3.x.
  * SF issue 1954487  Setting TextField.Value for TextArea in FireFox fails
  * SF issue 1913072  BrowserFactory.Settings.WaitForCompleteTimeOut doesn't work 

---------------------------------

WatiN 2.0.0.1000 (11 March 2008)

This is a CTP (Community Technology Preview) release of WatiN which offers support for both Internet Explorer and FireFox automation. This release is based
on using interfaces to provide multi browser support. Example:

IBrowser browser = new IE();

The final release will make use of (common) classes. Example:

Browser browser = new FireFox();

For more information on how to start creating cross browser tests see website\firefox.html.

A big thanks to Edward Wilde for his work on the FireFox WatiN code!

---------------------------------

WatiN 1.3.0.4000 (14 October 2008)

In this release support for lamdba's and Linq is added (for the .Net 2.0 version and higher). New helper methods are added to the Find class, two new DailogHandlers have been added and many smaller changes. This is the last 1.X release and also the last release supporting .Net 1.1. Many thanks to all who contributed to this release!

For the full release notes visit http://watin.org/documentation

-------------------------------
WatiN 1.2.1.4000 (23 October 2007)

This is a hotfix release and fixes an issue regarding the Find.ByText(string) method. Until version 1.2 it compared values using StringComparer but in 1.2.0 it accidentally was changed into StringContainsAndCaseInsensitiveComparer. This could cause different behaviour in your tests. The issue has been fixed.

-------------------------------
WatiN 1.2.0.4000 (4 October 2007)

This release includes mainly new features (some only for .Net 2.0). You can now start a new IE instance in its own process, set event properties when firing events on an element, get a specific Ancestor of an element, use your own attribute comparers, implement specific wait logic, evaluatie javascript code, automate the Area element, clean up all IE caches, take snapshots of webpages and much more. Many thanks to all who contributed to this release!

For the full release notes visit http://watin.org/documentation

-------------------------------
WatiN 1.1.2.4000 (16 May 2007)

This is a hotfix release and fixes an issue resulting in a null value for the srcElement property of the 
eventobject. This is most noted when an event is fired and the JScript in an html page tries to access
the window.event.srcElement property.

-------------------------------
WatiN 1.1.1.4000 (15 May 2007)

This is a hotfix release and fixes SF Bug 1718162: js error when using TypeText method of a TextField in frame. http://sourceforge.net/tracker/index.php?func=detail&aid=1718162&group_id=167632&atid=843727

-------------------------------
WatiN 1.1.0.4000 (2 May 2007)

This release adds some new features and many bugfixes. You can now use the not operator when searching for an element, automate the  SaveAs dialog, and WaitUntil some attribute of an element has some value. Most of the development time has been put into fixing bugs reported by users. Thanks to all who contributed to this release!

For the full release notes visit http://watin.org/documentation

-------------------------------
WatiN 1.0.0.4000 (1 March, 2007)

This release adds may new features like using multiple attributes to search for an element, full support for the Style attribute, casting an Element instance to a more specialized element type, support for changing the default settings used by WatiN, added support for tbody elements and improvements to SelectList and Table. 

For the full release notes visit http://watin.org/documentation

-------------------------------
WatiN 0.9.5.4000 (31 December, 2006)

This release adds new features to support testing of websites which make use of AJAX technology. Many other feature requests and bug fixes are included as well.

For the full release notes visit http://watin.org/documentation

-------------------------------
WatiN 0.9.0.4000 (31 October, 2006)

** Changes in general **

* Added an extensible model for handling IE dialogs through the DialogWatcher instance 
  of each DomContainer (IE and HTMLDialog). If no specific handling of a dialog (type) 
  is needed, DialogWatcher will automatically close any dialog that pops up.  
  
  Use ie.AddDialogHandler(handler) to add a dialog handler.  
  Use ie.RemoveDialogHandler(handler) to remove a dialog handler. 
  Use ie.DialogWatcher to get access to all the properties and methods of the 
  DialogWatcher instance.

  This release contains the following dialog handlers: 
  + Added support for Logon dialog handling (thanks to Bruce McLeod for the initial implementation). 
    Some of the constructors of the IE class accept an instance of LogonDialogHandler 
    to automatically logon to a website.
  + Improved support for handling alert and confirm dialogs in various ways through 
    AlertAndConfirmDialogHandler, AlertDialogHandler, ConfirmDialogHandler and SimpleJaveDialogHandler.
  + Added support for handling Certificate warning dialog.

  See the API Change section below to read some more details about the available 
  dialog handlers. A more complete explanation on how to use the different dialog 
  handlers will be available on the website soon. 

* Added support for automating a frames page which shows websites from different 
  domains (thanks to Ken Herman for the initial implementation).
* Added support for IFrame element(s) using the ie.Frames syntax (thanks to Gaurav 
  Jayal for supplying some good iframe web pages to test with).
* Added support for file upload (input element of type upload) through 
  ie.FileUpload.Set(MyFile).
* Added support for ie.Element() and ie.Elements to get any or all elements in a 
  document (or elements container like the div element). This way elements not natively 
  supported by WatiN can also be accessed through the WatiN API. The following 
  example shows how to get the text of an LI html element.

  Element li = ie.Element(Find.ById("LI1"));
  Debug.Writeline li.Text;

  If an element can contain elements, like the <pre /> html element, the return value of 
  ie.Element can be casted to ElementsContainer.

* Added basic support for <button /> tags through ie.Button() and ie.Buttons. Use 
  ie.Element() or ie.Elements instead if access to the inner elements is required.
* Improved the speed of the Table.FindRow implementation. It uses a special 
  TableRowFinder instead of looping through all kinds of collections. The 
  TableRowFinder is a good example on how to create a specialized attribute class to 
  find some kind of html element.
* Speed is improved when closing an IE instance. This is because all IE instances in the 
  same process share one instance of DialogWatcher. Also disposing DialogWatcher is 
  speed up by terminating the watcher thread earlier.
* WatiN allows the use of regular expressions in some more situations. See the API 
  change for the overloaded methods.
* Removed all constructors of the IE class that had autoclose as an argument. Use the 
  ie.AutoClose property if you need to change the auto close behaviour of an IE 
  instance. The default value of AutoClose is true.
* Made a change to the new IE implementation to better support using WatiN on Vista 
  with User Account Control (UAC) turned on. (Thanks to Bruce McLeod for testing on 
  Vista and supplying this change).
* Made extending and reusing some parts of the WatiN API easier:  
  By exposing some new methods in the ElementsSupport class it's possible to more 
  natively access the code which finds html elements in a webpage. Together with the 
  changes of the constructors of some elements and of all element collection classes, 
  this makes it possible to create your own customized wrappers for your own or third 
  party web controls. A more complete example on how to do this will be available on 
  the website soon.
* Made some changes and additions to the WatiN API documentation.




** API Changes **

Namespace WatiN.Core:

All element collection classes like ButtonCollection, TextFieldCollection etc..:
* Changed constructor. It now accepts an Arraylist with objects of type IHTMLElement 
  instead of an IHTMLElementCollection. 

Attribute class (and subclasses)
* Added an overload for Compare which excepts an object of type IHTMLElement. This 
  method is called when an HTML element is searched for.
* Added a protected method GetAttribute which returns the value for the given 
  attributename and IHTMLElement. Throws an exception if the attributename isn't valid 
  for the IHTMLElement instance.
* Added a protected method GetElement which casts and returns an object to 
  IHTMLElement. An ArgumentException is thrown if the object isn't of type IHTMLElement. 

Document class
* Added an overload for ContainsText which excepts a regular expression to match against.

DomContainer class [inherits Document]
* Added AddDialogHandler method to register a specific dialog handler.
* Added RemoveDialogHandler method to de-register a specific dialog handler.
* Added DialogWatcher property which gives access to the full DialogWatcher object.
* Added StartDialogWatcher method which should be called by all objects that inherit 
  DomContainer as soon as a processid can be determined.
* Added an abstract hWnd property which should be implemented by all objects that 
  inherit DomContainer.
* Added ProcessId property which returns the process id the DomContainer is running in.
* Removed MainDocument property. This was marked obsolete since the WatiN 0.8 release.

Element class (and subclasses)
* Added Complete property. Returns false if the element is not fully loaded by the 
  Internet Explorer Dom, true if it is.

ElementCollection class
* Contains all Elements of a Document, of an Element which implements 
  IElementsContainer or of an Element inheriting from ElementsContainer. Can be called 
  like this: ElementCollection elements = ie.Elements;

ElementsContainer class (and sub classes)
* Renamed, was SubElementsContainer.
* Added Element(elementId) method to get any type of html element by it's Id.
* Added Element(findBy) method to get any type of html element by the given findBy instance.
* Added Elements property to get all elements.
* Added FileUpload(elementId) method to get an input element of type=upload. 
* Added FileUpload(findBy) method to get an input element of type=upload by the given findBy instance.
* Added FileUpload property to get all input elements of type=upload.

ElementsSupport class
* Renamed, was SubElementsSupport
* Added FindAllElements which returns an ArrayList with all matching IHTMLElement instances.
* Added FindFilteredElements which returns an ArrayList with all matching IHTMLElement instances.
* Added FindFirstElement which returns an a matching IHTMLElement instance, null or 
  throws an ElementNotFoundException.

FileUpload class
* New class to support setting the file to upload on an input element of type=upload.
 
FileUploadCollection class
* Contains all FileUpload elements of a Document, of an Element which implements 
  IElementsContainer or of an Element inheriting from ElementsContainer.

Find class
* Added an overload for ByFor which accepts an Element as argument.

IE class [Inherits DomContainer]
* Removed all constructors with the autoclose argument. Use ie.AutoClose if you want 
  to change the autoclose value (default is true).
* Added new constructors which accept an LogonDialogHandler instance as an argument.
* Renamed AutoCloseIE property to AutoClose.

Image class [Inherits Element]
* Marked Href property as obsolete. Use Src property instead.
* Added Name property.

PopUpWatcher class
* Removed. Use DialogWatcher and/or AlertAndConfirmDialogHandler instead.

SelectList class
* Added an overload for Select which accepts a regular expression as argument.
* Added an overload for SelectByValue which accepts a regular expression as argument.

StringComparer class [Implements ICompare]
* Added a protected property valueToCompareWith.

StringContainsAndCaseInsensitiveComparer class [Inherits StringComparer]
* Inherits StringComparer.

StringEqualsAndCaseInsensitiveComparer class [Inherits StringComparer]
* New class inherits StringComparer.

Table class [Inherits ElementsContainer]
* Added an overload for FindRow which accepts a regular expression as argument.
* Added an overload for FindRow which accepts a TableRowFinder instance as argument.

TableRowFinder class [Inherits Text]
* New finder class to find a TableRow


Namespace WatiN.Core.DialogHandlers:
* New namespace which contains the dialog handler classes.

AlertAndConfirmDialogHandler [Inherits BaseDialogHandler]
* This dialog handler handles alert and confirm dialogs by placing their message on a queue 
  and closing the dialog. You can access the queue, pop messages etc. through the 
  properties and methods exposed by this class. This dialog handler gives you the same 
  functionality as the PopUpWatcher class of WatiN 0.8 and older.

AlertDialogHandler [Inherits JavaDialogHandler]
* With this dialog handler you can handle alert dialogs and clicked the OK button after  the 
  dialog is shown.

BaseDialogHandler [Implement IDialogHandler]
* Inherit this class if you write your own dialog handlers.

CertificateWarningHandler [Inherits BaseDialogHandler]
* With this dialog handler you can handle Certificate warning dialogs. You should decide 
  which button to press when creating an new instance.

ConfirmDialogHandler [Inherits JavaDialogHandler]
* With this dialog handler you can handle confirm dialogs and decide which button is clicked 
  after  the dialog is shown.

DialogWatcher
* This class watches for Internet Explorer dialogs popping up, loops through the registered 
  dialog handlers and if no handler has handled the dialog it closes the dialog automatically. 
  You can add, remove dialog handlers through the properties and methods exposed by 
  this class. You should be aware that DialogWatcher watches for Internet Explorer dialogs 
  created by all Internet Explorer instances in a process.

FileUploadHandler [Inherits BaseDialogHandler]
* With this dialog handler the FileUpload class handles setting the file to upload. Use 
  ie.FileUpload("upload1").Set(MyFile) instead of using this dialog handler.

IDialogHandler
* Implement this interface if you want to write your own dialog handler and don't want to 
  inherit from BaseDialogHandler. Return true if the handler was able to handle the dialog, 
  otherwise return false.

JavaDialogHandler [Inherits BaseDialogHandler]
* Used by AlertDialogHandler and ConfirmDialogHandler. Use these classes instead.

LogonDialogHandler [Inherits BaseDialogHandler]
* With this dialog handler a logon dialog will be filled out and submitted. You can pass an 
  instance of this class to some overloaded constructors of the IE class to handle logging 
  on to a website.

SimpleJavaDialogHandler [Inherits BaseDialogHandler]
* With this dialog handler an alert or confirm dialog can be handled. You should decide 
  which button to press when creating an new instance. When an alert or confirm dialog is 
  shown it stores the message 

WinButton 
* Wrapper class for a button on a dialog. This can be used in custom dialog handlers to 
  access buttons on the dialog.

Window 
* Wrapper class for a window which is passed to a dialog handler through 
  IDialogHandler.HandleDialog(window).


Namespace WatiN.Core.Exceptions:

ReferenceCountException 
* Thrown if DialogWatcher.DecreaseReferenceCount method is called more then 
  DialogWatcher.IncreaseReferenceCount.


Namespace WatiN.Core.Interfaces:

IElementsContainer
* Renamed, was ISubElements.


** SourceForge Trackers **

* Added Feature requests:
1553099	Cross-domain scripting security
1562743	Support for Iframes
1562745	Support for BUTTON elements
1581521	Support confirm dialogs

* Fixed Bugs:
1578611	DomContainer not disposing of DialogWatcher
1587075	On Vista new IE() spawns two Internet Explorers


-------------------------------
WatiN 0.8.0.4000 (31 August, 2006)

** Changes in general **

* WatiN is now available in a .Net 1.1 and .Net 2.0 distribution
* IE and HTMLDialog now support all functionality which in 0.7.0 was only 
  accessible by using IE.MainDocument.xxx. The MainDocument property has been 
  marked obsolete. You are encouraged to change your code because the MainDocument 
  property will be removed is the next release. To make this new syntax possible 
  some code breaking changes are introduced(see API Changes).
* Added support for finding elements with a regular expression.
* Added support for finding an Image by its Src (source) attribute and added 
  functionality to the Image class.
* Improved IE.HTMLDialog behaviour.
* Added support to get the active element (element with the focus) in a document.
* Added IE.PressTab which sends a Tab key to IE. This allows tabbing through the 
  elements (and address bar). Combined with Document.ActiveElement this makes it 
  possible to do some usability testing.
* IE constructors throw a InvalidThreadState exception if code is not executed on 
  a single threaded apartment. Read the 'WatiN and Thread.ApartmentState' article 
  on http://watin.sourceforge.net for more information.
* Added 2 new constructors to WatiN.Core.IE that accept an System.Uri instance.
* Added support for firing events on elements with no id (only for elements not 
  shown in an HtmlDialog).
* Added IE.GetWindowStyle to determine the window style (normal, minimized, maximized, etc).
* Updated documentation (all class have an explanation about their purpose)
* Updated build file to support building both a .Net 1.1 and .Net 2.0 version.
* Updated and added (many) unit tests.
* Added Microsoft.mshtml.dll to the distribution files.


** API Changes **

Attribute class (and subclasses)
* Renamed AttributeValue to Attribute. All subclasses are renamed accordingly (BREAKING CHANGE).
* Added Regex support for Attribute and it's subclasses.
* Attribute class now overrides ToString which returns the same as the Value property.
* Attribute constructor now allows for empty Value parameter.

Document class
* Added support to get the active element (element with the focus) of a document
* Added Document.Uri which returns a System.Uri instance of the Document.Url.
* throws an InvalidAttributException when searching for an element by an invalid attribute.

DomContainer class [inherits Document]
* Inherits Document class.
* Property HtmlDocument now returns IHTMLDocument2 instead of HtmlDocument(BREAKING CHANGE).
* Dispose method changed from public to internal (BREAKING CHANGE).

Find class
* Added Regex factory methods.
* Added support for finding an Image by its Src (source) attribute.

IE class [Inherits DomContainer]
* Url property is now inherited from Document instead of returning the url in the 
  navigation bar. Result should be the same although the encoding of the url might 
  be a bit different. (BREAKING CHANGE).
* Added 2 new constructors to WatiN.Core.IE that accept a System.Uri instance.
* Added IE.PressTab which sends a Tab key to IE. This allows tabbing through the 
  elements (and address bar). Combined with Document.ActiveElement this makes it 
  possible to do some usability testing.
* Added IE.GetWindowStyle to determine the window style (normal, minimized, maximized, etc).

Image class [Inherits Element]
* Added Src, Alt and Href properties.

Src class [Inherits Attribute]
* New class to support finding an Image by its Src (source) attribute.


** SourceForge Trackers **

* Added Feature requests:
1543115  Throw exception when Thread has invalid ApartmentState
1535932  Access elements like ie.TextField
1530889  Upgrade to .net 2.0

* Fixed Bugs:
1549329  Google's redirect to localized Google fail tests  
1549145  ie.HTMLDialog(...) doesn't WaitForComplete  
1549138  SelectList.Select doesn't WaitForComplete  
1543108  Image with an empty Src hangs WatiN/IE  
1530876  Unit tests fail on W2K3 SP1 due to IE local machine lockdown  
1530874  Core.Element.ClickNoWait throws an unhandled exception  
1530859  Exceptions are thrown from Watin.Core.IE.findHtmlDialog  


-------------------------------
WatiN 0.7.0.4000 (8 July, 2006)

* In the previous release running the unittests from the binary watin.unittest.dll resulted in 
  a lot of open IE windows because the HTML files were not distributed in the right place.
  This problem is solved in this distribution. The logic to find the location of the HTML files
  is also changed so the test can be both run by the binary and in de VS2003 IDE 
  using "Test Driven.net"
* Added documentation and examples to the source code resulting in beter support by intellisense when
  using WatiN during your development. There's also a helpfile available (WatiN.chm). 
  Although the most important parts are documented to get you started with WatiN, there is still 
  a lot to be documented.
* Removed microsoft.mshtml.dll from the distribution because it's unclear if it's legal to 
  distribute it this way. WatiN now references the version registered in the GAC.
* Improved the build file.

-------------------------------
WatiN 0.6.3.3007 (31 May, 2006)
* Initial release at Sourceforge