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