问题
I'm using WatiN for web testing, and am encountering issues caused by the fact that for the 'readonly' attribute of INPUT elements, WatiN is attempting to parse the value as a boolean, which as far as I can tell is incorrect, as the attribute should be written as follows:
<input readonly="readonly" />
When I try to access the TextField.Readonly
property from WatiN at runtime, an error is thrown because WatiN attempts to parse 'readonly' as a boolean. I also encountered a similar issue with the 'selected' attribute of the <option>
element.
I find it hard to believe that nobody else has encountered these basic scenarios using WatiN which makes me think I am missing something obvious. Is there a known way to work around these issues or is this a known issue with WatiN?
回答1:
This issue has to do with IE9 showing a page in IE9mode differs greatly from how IE9 in IE8mode (and older versions of IE) behaves. These problems have been fixed in WatiN 2.1
回答2:
The syntax of readonly="readonly" that you mention is definitely correct according to w3c school and it looks like you have indeed found a bug.
Looking at /trunk/src/Core/TextField.cs in line 57 the code is
public virtual bool ReadOnly
{
get
{
var value = GetAttributeValue("readOnly");
return string.IsNullOrEmpty(value) ? false : bool.Parse(value);
}
}
so you should probably just change it to something like this, although I am not using the fancy ? and : syntax :-)
public virtual bool ReadOnly
{
get
{
string value = GetAttributeValue("readOnly");
if (value.ToLower() == "readonly")
{
return true;
}
else
{
return false;
}
}
}
来源:https://stackoverflow.com/questions/5537385/how-to-cope-with-readonly-and-selected-attributes-in-watin-2-0-against-ie9