微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Selenium:submit()工作正常,但click()没有

我有提交按钮,它只是页面上的一个,而且它是在表单中.

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 init,它很好):

  WebElement searchButton = driver.findElement(By.xpath("//button[@type='submit']"));
  searchButton.submit();

(和一些搜索执行)

但是当我试图通过点击()按下它时

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()成功按下按钮,但是单击() – 否.而且我不明白,为什么“test”是绿色的,当我们尝试点击()时,如果查看驱动程序启动的浏览器则没有执行.

更新:
我试过了

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() – 没有.

解决方法:

方法object.submit()用于将表单提交给服务器.它还有另一个优点,如果你无法找到“提交”按钮,那么你可以获取表单的任何对象并触发submit()函数.
它似乎在searchButton.submit(); searchButton是表单的一个元素,对它的提交操作会触发在服务器上提交表单.

现在,为什么searchButton.click();不在这里工作可能有以下原因.

>该按钮可见但未启用.
>司机正在寻找2
searchButton元素的实例.

建议:评估以下代码并检查它是否返回多个元素.如果是,那么你点击了错误的实例.

List<WebElements> e = driver.findElements(By.xpath("//button[@type='submit']"));

也试试,

driver.findElement(By.xpath(".//button[@class='btn btn__primary'][@type='submit']")).click()

http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐