【问题标题】:How can I check the values of a webelement in a selenium test?如何在 selenium 测试中检查 webelement 的值?
【发布时间】:2021-08-12 12:08:48
【问题描述】:

我正在为我的 SpringBoot 应用程序开发一个 selenium 测试,我已经成功地创建了一个新帐户,在该帐户上创建一个新项目并将其值设置为 funds=0,然后我向该项目捐款,并重定向到显示用户贡献的页面,包括“amountContributed”元素,该元素的值 > 0 作为捐赠。

如何在 Selenium 测试中检查元素的值?我的尝试在下面,我得到的错误在下面:

//重定向到用户贡献页面。 assertEquals("你的贡献", this.webDriver.getTitle());

    //Assert that the total contributed amount for the project is 2000 as it was 0 prior to contribution.
    assertEquals("2000", this.webDriver.findElement(By.id("amountContributed")));


expected: <2000> but was: <[[ChromeDriver: chrome on WINDOWS (60e2cb3895ae1f8e300b2068bd0f46c7)] -> id: amountContributed]>

HTML:

<span>Amount Contributed: </span>
<li th:text="${project.amountContributed}" id="amountContributed">Amount Contributed</li>

【问题讨论】:

  • 添加您尝试的导致错误的 selenium 代码。

标签: spring spring-boot selenium testing automated-tests


【解决方案1】:

看到这个

this.webDriver.findElement(By.id("amountContributed"))

将返回一个网络元素,并且您将一个 网络元素 与字符串 "2000" 进行比较。这就是你得到以下异常的原因:

预期: 但结果是: id: amountContributed]>

试试这个:

assertEquals("2000", this.webDriver.findElement(By.id("amountContributed")).getText());

但是你分享的 HTML:

<span>Amount Contributed: </span>
<li th:text="${project.amountContributed}" id="amountContributed">Amount Contributed</li>

表明如果您使用 amountContributed 作为 id,.getText() 将返回

Amount Contributed

字符串,你的断言将再次失败。

【讨论】:

  • 感谢您的评论,我认为这可能有效,因为虽然文本显示贡献金额,但在实际网页上显示为 2000。
  • 元素中的“贡献金额”文本是否不被2000覆盖?再次感谢。
  • 这取决于可能改变 DOM 的用户交互。有帮助吗?如果有,您能否接受此答案,以便将来的读者可以使用绿色。如果您想接受这个答案,请随时点击投票按钮旁边的复选标记。感谢您的时间和对此的回应。 ——
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签