我有一个我需要自动登录的网站
我正在尝试使用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 && 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 && 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>
答案 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
{ }
}