Java Firefox:Form submit按钮单击并不总是将表单详细信息传送到服务器

Java Firefox:Form submit按钮单击并不总是将表单详细信息传送到服务器,java,selenium,firefox,safari,selenium-chromedriver,Java,Selenium,Firefox,Safari,Selenium Chromedriver,我正在尝试提交一个简单的表单,在这里我需要输入电子邮件,然后单击submit按钮,在后端执行电子邮件验证。当我输入电子邮件并单击提交按钮时,它会抛出一个错误“需要电子邮件”,尽管我可以看到电子邮件是由webdriver输入的。这在Chrome上运行非常好,但在firefox和Safari上失败的次数最多 以下是我的html: <div class="test-form"> <div class="row">

我正在尝试提交一个简单的表单,在这里我需要输入电子邮件,然后单击submit按钮,在后端执行电子邮件验证。当我输入电子邮件并单击提交按钮时,它会抛出一个错误“需要电子邮件”,尽管我可以看到电子邮件是由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>
当我在Firefox或Safari上执行单击操作时,我会在电子邮件字段中出现错误“需要电子邮件”,尽管我可以看到已输入电子邮件。我也试着放线睡觉,但没用。而且它在Chrome中工作没有任何问题


我也尝试过提交表单,使用javascript点击,使用sendkeys(keys.return/Enter),但似乎没有任何东西能够始终如一地工作。有人能帮我解决Firefox和Safari浏览器中的具体问题吗?

因此,我终于能够用一段在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)。

代码中的
email
对象是什么?如何初始化它?它肯定是
WebElement
。问题是。。。硒就是这样一种工具。。。如果我是OP,我会在点击提交之前添加Thread.sleep(2000)。仅供测试。@Andremoniy@FindBy(id=“email”)私有WebElement电子邮件,是的,这是一个webElement@amateurCoder这是绑定id/named的一种非常奇怪的方式field@Pijotrek我也尝试了thread.sleep,但即使等待30秒也不起作用。我可以看到webdriver在电子邮件字段中输入的电子邮件。点击提交会抛出错误“需要电子邮件”。
JavascriptExecutor js = ((JavascriptExecutor)driver);
js.executeScript("var e=document.getElementById('email'); e.dispatchEvent(new Event('change')); e.dispatchEvent(new Event('blur')); return true;" );