submit()不适用于Selenium API

时间:2018-06-14 23:23:18

标签: java selenium selenium-webdriver xpath webdriver

我正在尝试使用selenium api submit()提交表单。 Click()无法正常工作,因为它是表单按钮。 元素是“提交”。 element.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>

非常感谢任何帮助。提前谢谢。

4 个答案:

答案 0 :(得分:1)

根据您分享的 HTML ,您可以按如下方式调用click()方法:

  • Java click()

    driver.findElement(By.xpath("//button[@class='blue-button'][contains(.,'Share Energy Usage')]")).click();
    

注意:由于 AUT 基于Angular,因此如果您尝试在页面加载后立即调用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();

答案 1 :(得分:0)

当这种情况发生时你总是可以使用JS(在某些应用程序中经常使用它) -

driver.execute_script("document.getElementsByClassName('blue-button')[0].click()")

答案 2 :(得分:0)

您可以通过以下方式致电:

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

正如@Debanjan所提到的那样介绍等待。

答案 3 :(得分:0)

感谢大家的宝贵时间。我尝试了许多选项,但是没有用,因为该按钮上有多余的余地,所以Selenium甚至在故意将元素放在焦点上之后仍在不断失去焦点。当我要求开发人员删除该按钮上多余的CSS边距时,问题已解决。