【问题标题】:How to cope with 'readonly' and 'selected' attributes in WatiN 2.0 against IE9如何在针对 IE9 的 WatiN 2.0 中处理“只读”和“选定”属性
【发布时间】:2011-04-13 16:12:11
【问题描述】:

我正在使用 WatiN 进行 Web 测试,并且遇到了由于 INPUT 元素的“只读”属性导致的问题,WatiN 正在尝试将值解析为 boolean,这据我所知是不正确的,因为属性应该写成如下:

当我尝试在运行时从 WatiN 访问 TextField.Readonly 属性时,会引发错误,因为 WatiN 尝试将“只读”解析为布尔值。我也遇到了<option> 元素的“selected”属性的类似问题。

我很难相信没有其他人使用 WatiN 遇到过这些基本场景,这让我觉得我遗漏了一些明显的东西。是否有解决这些问题的已知方法,或者这是 WatiN 的一个已知问题?

【问题讨论】:

    标签: watin


    【解决方案1】:

    此问题与 IE9 以 IE9 模式显示页面有关,这与 IE9 以 IE8 模式(和旧版本的 IE)的行为方式有很大不同。这些问题已在 WatiN 2.1 中修复

    【讨论】:

    • 感谢 Jeroen - 我刚刚升级到 2.1 版,它确实解决了 IE9 问题。非常感谢。
    【解决方案2】:

    你提到的 readonly="readonly" 的语法根据 w3c 学校肯定是正确的,看起来你确实发现了一个错误。

    查看第57行的/trunk/src/Core/TextField.cs代码是

     public virtual bool ReadOnly
     {
       get
       {
         var value = GetAttributeValue("readOnly");
         return string.IsNullOrEmpty(value) ? false : bool.Parse(value);
       }
     }
    

    所以你可能应该把它改成这样,虽然我没有使用幻想?和:语法:-)

     public virtual bool ReadOnly
     {
       get
       {
         string value = GetAttributeValue("readOnly");
         if (value.ToLower() == "readonly")
         {
           return true;
         }
         else
         {
            return false;
         }
       }
     }
    

    【讨论】:

    • 谢谢,我已经通过 Reflector 发现了实现,但如果可以避免的话,我宁愿不必修改源代码。我想知道这是一个已知问题还是我遗漏了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2011-12-07
    相关资源
    最近更新 更多