我正在尝试提交一个简单的表单,我需要输入电子邮件并单击提交按钮,在后端执行电子邮件验证。当我输入电子邮件并点击提交按钮时,它会抛出错误"需要电子邮件"虽然我可以看到电子邮件是由webdriver输入的。这在Chrome中运行得非常好,但在firefox和Safari上大多数时候都失败了。
以下是我的HTML:
<div class="test-form">
<div class="row">
<div class="col-md-12 divider5050-hr">
<span class="or-sperator-hr">OR</span>
</div>
</div>
<form class="js-form" action="#" method="post" novalidate="novalidate">
<div class="row">
<div class="col-xs-12">
<div class="m-md-tb text-center">
<h3>Sign up with your email address:</h3>
</div>
<div class="form-group">
<label>Enter your email address </label>
<input id="email" type="email" class="form-control js-register-email" maxlength="50" name="email_address" placeholder="e.g. john@example.com" data-bind="value: registerCustomer">
</div>
<div class="row m-t">
<div class="col-xs-12 text-center">
<button class="btn btn-info btn-width--large m-md-tb js-register-submit" id="SignUp" data-bind="click: registerNewCustomer">
Continue
</button>
</div>
</div>
</div>
</div>
</form>
<div class="row">
<div class="col-xs-12 text-center">
<span>Already have an account? <a class="underline" href="https://test.test.com/account/login/checkuserexists">Sign in</a></span>
</div>
</div>
</div>
以下是我尝试做的事情:
waitforvisibilityofElement(email);
email.sendkeys("testemail");
waitforvisibilityofElement(continue); //clicking submit button
continue.click();
当我在Firefox或Safari上进行点击操作时,我得到错误&#34;需要电子邮件&#34;对于电子邮件字段,虽然我可以看到已输入电子邮件。我也尝试过使用Thread.sleep但是没有用。它可以在Chrome中运行,没有任何问题。
我还尝试使用javascript点击提交表单,使用sendkeys(keys.return / Enter),但似乎没有任何工作。有人可以帮助帮助Firefox和Safari中的浏览器特定问题吗?
答案 0 :(得分:0)
所以最后我能用一段适用于Firefox的JavaScript代码来解决我的问题。
JavascriptExecutor js = ((JavascriptExecutor)driver);
js.executeScript("var e=document.getElementById('email'); e.dispatchEvent(new Event('change')); e.dispatchEvent(new Event('blur')); return true;" );
我还有一个问题,因为上面的代码适用于Firefox,但不适用于Safari(IPhone-RealDevice)。