我正在尝试使用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>
非常感谢任何帮助。提前谢谢。
答案 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边距时,问题已解决。