【问题标题】:click on submit button not working in selenium webdriver单击提交按钮在 selenium webdriver 中不起作用
【发布时间】:2015-08-29 08:59:35
【问题描述】:

我试图点击注册表单中的创建帐户按钮。 这是按钮在 html 页面中的位置:

<div id="submitContainer"><button type="submit" class="large"><span><strong> Create Account </strong></span></button></div>

这是按钮 xpath:

//*[@id="submitContainer"]/button/span/strong

问题是按钮没有id,他位于一个div中。 我尝试按 id、xpath、css、name 使用,但所有这些都不起作用:

driver.findElement(By.id("submitContainer")).click();

driver.findElement(By.xpath("//*[@id='submitContainer']/button/span/strong")).click();

driver.findElement(By.tagName("Create Account")).click();

driver.findElement(By.className("large")).click();

谢谢!

【问题讨论】:

  • 这是按钮在 html 页面中的位置:
  • 怎么样://*[@id="submitContainer"]/button

标签: selenium xpath selenium-webdriver webdriver


【解决方案1】:

在您的示例中,除了最后一个之外,您没有针对按钮。现在你的最后一个例子,实际上应该找到按钮元素:

driver.findElement(By.className("large")).click();

能否请您发布您收到的错误消息?

页面上是否存在多个 className 为“大”的元素?

【讨论】:

  • 我会使用 CSS 选择器专门针对大类按钮。 driver.findElement(By.cssSelector("button.large")).click();
【解决方案2】:

确保按钮在视图窗口中,如果是,请尝试单击它。尝试等待元素加载。您的元素加载到 DOM 中可能存在问题 -

driver.wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//button[@type='submit']"))).click();

希望这会有所帮助。

【讨论】:

  • ...或者您可以只单击按钮,如果它未启用或未显示,您将得到一个错误,而无需所有额外的代码检查...
  • 对@JeffC。我已经用wait() 函数更新了答案。我以前应该这么想的。谢谢:)
  • wait.until() 将返回您等待的元素...只需存储它并 .click() 它。不用再找了。
【解决方案3】:

如果你想使用 xpath,正确的语法是 //按钮[@type='提交']

【讨论】:

    【解决方案4】:

    在下面使用这一行:

    线程.sleep(3000);

    我用了这个就得到了结果。由于一段时间以来,我们需要给网站一些睡眠时间来完全加载以拉取 Xpath。

    【讨论】:

    • 我认为这是一种解决方法,而不是最终解决方案...必须有比硬编码的 Thread.Sleep 更好的方法...
    • 如果你有比这更好的方法让代码更有效,你可以分享
    【解决方案5】:

    您可以使用链接文本

    driver.findElement(By.linkText("Create Account")).click();
    

    希望它对你有用。

    【讨论】:

    • 这行不通,因为它不是链接,而是按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2017-05-23
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多