Java submit()不适用于Selenium API

Java submit()不适用于Selenium API,java,selenium,selenium-webdriver,xpath,webdriver,Java,Selenium,Selenium Webdriver,Xpath,Webdriver,我正在尝试使用selenium api submit()提交表单。Click()肯定不能工作,因为它是表单按钮。 元素是“提交”。 元素。submit(),但什么都没有发生。 我正在尝试一些java脚本解决方案来提交表单。 以下是html: <form class="ng-pristinedfgd ngrg-valid"> <label class="input-width" for="userName">Username</label> <input

我正在尝试使用selenium api submit()提交表单。Click()肯定不能工作,因为它是表单按钮。 元素是“提交”。 元素。submit(),但什么都没有发生。 我正在尝试一些java脚本解决方案来提交表单。 以下是html:

<form class="ng-pristinedfgd ngrg-valid">
<label class="input-width" for="userName">Username</label>
<input type="text" class="input-width form-input " name="userName" autocomplete="off">
<label class="input-width" for="password">Password</label>
<input type="password" class="input-width form-input " name="password" autocomplete="off">
<p class="forgot-utility">Need login help? Visit the utility website for direction.</p>
<button type="**submit**" class="blue-button">Share Energy Usage</button
</form>

用户名
密码
需要登录帮助吗?访问公用事业公司网站了解方向

共享能源使用根据您共享的HTML,您可以调用
click()
方法,如下所示:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//form[@class='ng-pristinedfgd ngrg-valid']//button[@class='blue-button'][contains(.,'Share Energy Usage')]"))).click();
  • Java
    单击()

注意:由于AUT是基于此的,因此,如果您试图在页面加载后立即调用
click()
,则必须按如下方式诱导WebDriverWait:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//form[@class='ng-pristinedfgd ngrg-valid']//button[@class='blue-button'][contains(.,'Share Energy Usage')]"))).click();

当这种情况发生时,您可以随时使用JS(在某些应用程序中这种情况比较常见)-


您可以通过以下方式拨打:

driver.findElement(By.className("blue-button")).click();

正如@Debanjan提到的,请稍候。

感谢大家抽出宝贵的时间。我尝试了很多选项,但都没用,因为按钮上有额外的空白,所以Selenium一直在失去焦点,即使是在有意关注元素之后。当我要求开发人员删除该按钮上额外的CSS边距时,问题得到了解决。

这不是FormButton.submit(),而是
FormElement.submit()
。您的问题不清楚。@Mini这不是一个建议,而是一个经过充分研究的答案。然而,
不起作用
并不能说明发生了什么错误。使用当前代码试用以及错误堆栈跟踪更新答案
driver.findElement(By.className("blue-button")).click();