Watin - 填写表格后仍然禁用“提交”按钮

时间:2014-07-30 13:16:12

标签: javascript .net web watin

我有一个我需要自动登录的网站 我正在尝试使用Watin .NET库来实现这一点 当我使用Watin填写用户名和密码字段时,sumbit按钮保持禁用状态 我尝试在其他领域应用许多事件(KeyPress,KeyDown,KeyUp,Tab,Enter ......)没有任何效果。
请原谅我按价值找到按钮,但这是我发现有效的唯一方法。

 var field = ie.TextField(Find.ByName("userName"));
 field.TypeText("username");
 field.KeyDown();
 field.KeyUp();            

 field = ie.TextField(Find.ByName("password"));
 field.TypeText("pwd");
 field.KeyDown();
 field.KeyUp();

 ie.Button(Find.ByValue("התחבר")).Click();

我发现该按钮被禁用的例外情况 我需要登录的页面是: https://portal.dorad.co.il/#/Login
我想要的只是找到一种自动方式来启用sumbit按钮,以便我可以登录。

登录表格代码:

<form class="span5 offset4 loginForm ng-pristine ng-invalid ng-invalid-required" name="loginForm" ng-submit="doLogin()" autocomplete="off">
    <h2>
       Login
    </h2>
    <fieldset>
        <div class="control-group">
            <label class="control-label" for="fullName">
               User Name
            </label>
            <div class="controls">
                <input name="userName" id="useName" ng-required="true" type="text" ng-model="user.userName" auto-fill-sync="" autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required" required="required">
                <span class="alert alert-error" ng-show="loginForm.userName.$error.required &amp;&amp; loginForm.userName.$dirty" style="display: none;">
                    Mandatory Field
                </span>
            </div>
        </div>
        <div class="control-group">
            <label class="control-label" for="emailAddress">
               Password
            </label>
            <div class="controls">
                <input name="password" id="password" type="password" ng-model="user.password" auto-fill-sync="" ng-required="true" autocomplete="off" class="ng-pristine ng-invalid ng-invalid-required" required="required">
                <span class="alert alert-error" ng-show="loginForm.password.$error.required &amp;&amp; loginForm.password.$dirty" style="display: none;">
                    Mandatory Field
                </span>
            </div>
        </div>
    </fieldset>
    <input type="submit" class="btn" value="התחבר" ng-disabled="loginForm.$invalid" disabled="disabled">
</form>

2 个答案:

答案 0 :(得分:1)

这可能是由于触发事件被阻止所致。 尝试使用:

Element fg = ie.TextField(Find.ByName("password"));
fg.DomContainer.RunScript("$('#"+fg.id+'").change();");

这为我解决了类似的问题。

答案 1 :(得分:0)

确定。然后尝试使用带有java脚本代码的Eval函数。将这两个元素传递给下面的方法并检查。

    private void ChangeAndBlur(Element element)
    {
        try
        {
            element.DomContainer.Eval(string.Format("$('#{0}').change()", element.Id));
            element.DomContainer.Eval(string.Format("$('#{0}').blur()", element.Id));
        }
        catch
        { }
     }