Firefox:表单提交按钮单击并不总是将表单详细信息带到服务器

时间:2017-08-25 08:43:29

标签: java selenium firefox safari selenium-chromedriver

我正在尝试提交一个简单的表单,我需要输入电子邮件并单击提交按钮,在后端执行电子邮件验证。当我输入电子邮件并点击提交按钮时,它会抛出错误"需要电子邮件"虽然我可以看到电子邮件是由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中的浏览器特定问题吗?

1 个答案:

答案 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)。