【发布时间】:2018-06-08 02:52:06
【问题描述】:
我有提交按钮,页面上只有一个,而且是表单。
html部分:
<form class="search-form ng-touched ng-dirty ng-valid" novalidate="" style="" xpath="1">
<div class="row">...</div>
<div class="row">...</div>
<div class="row">...</div>
<div class="form__actions" xpath="1">
<div class="form__buttons">
<!---->
<div class="btn__wrapper">
<button class="btn btn__primary" type="submit">
Select My Car
</button>
</div>
</div>
</div>
</form>
所以,我正在使用 xpath:
//button[@type='submit']
我通过 submit() 成功按下它(让我跳过 WebDriver 初始化,它很好):
WebElement searchButton = driver.findElement(By.xpath("//button[@type='submit']"));
searchButton.submit();
(和一些搜索执行)
但是当我试图通过 click() 按下它时
WebElement searchButton = driver.findElement(By.xpath("//button[@type='submit']"));
searchButton.click();
在启动的浏览器中没有按下,同时Junit测试是绿色的(不是测试,只是按下按钮):
@Test
public void test() {
WebElement button = driver.findElement(By.xpath("//button[@type='submit']"));
button.click();
}
请有人解释一下,为什么在这种情况下 submit() 成功按下按钮,但 click() - 不。而且我不明白,为什么“测试”是绿色的,当我们尝试点击()时,如果查看驱动程序启动的浏览器,它没有执行。
更新: 我试过了
WebElement button = driver.findElement(By.xpath("//button[@type='submit']"));
if (button.isEnabled()) {
button.click();
}
和
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(button)).click();
但还是一样 - submit() 工作正常,click() - 不行。
【问题讨论】:
-
我不确定它是如何使用的,但是从文档中单击不会等待下一页加载,而提交将等待操作完成。这可能是原因吗?
-
你能用相关的 HTML 更新问题吗?
-
我加到高2个div,请注意,够不够
-
@gvmani:听起来很合理,谢谢...让我们等待更多解释。
-
按钮是否在表单中?如果是这样,请显示表单元素。
标签: java selenium selenium-webdriver junit