【问题标题】:How to verify text in a css class with Selenium?如何使用 Selenium 验证 css 类中的文本?
【发布时间】:2015-09-05 16:53:14
【问题描述】:

我正在使用 Selenium 来自动化应用程序创建测试。测试包括填写网页上的字段并单击提交按钮。完成后,将加载一个新页面,其中包含说明成功或失败的警报。我的问题是,警报在 css 类中编码如下:

<div class="alert-box notice">
     Successfully created application
    <a href="" class="close">×</a>
</div>

我需要做的就是验证文本“成功创建的应用程序”是否存在。我不需要操纵任何东西。

【问题讨论】:

  • “捕获”如何?做什么? CSS 无法检测内容。
  • 您可以使用 Selenium 本身验证文本。我不明白你到底打算用 CSS 做什么。
  • 我正在使用 Selenium,只需要验证文本是否确实存在。通常我会使用 findElement 但文本没有标识符。

标签: css selenium-webdriver


【解决方案1】:

我不确定您使用的是哪种语言,但基本上,您需要获取包含 div 中的文本。

例如,

driver.findElement(By.cssSelector(".alert-box.notice")).getText()

【讨论】:

  • 当我尝试这个时,测试失败了。跟踪中包含以下行:org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":".alert-box.notice"}
  • @EricScott 我最好的猜测是它出现之前有一段延迟。我建议等到元素存在,然后对其进行测试。
【解决方案2】:

经过与同行的讨论和大量在线研究,这是我找到的解决方案。

起初我尝试根据 Nathan 的建议捕获文本,但决定将结果存储为字符串。

String happy = driver.findElement(By.className("alert-box notice")).getText();
assertEquals(true, happy.contains("Successfully"));

问题在于我不断收到错误消息,例如“org.openqa.selenium.InvalidSelectorException:给定的选择器警报框通知无效或不会导致 WebElement。发生以下错误: InvalidSelectorError: 不允许复合类名"

由于我无法控制类名,所以我走 xpath 路线如下:

String happy = driver.findElement(By.xpath("html/body/div/div[2]/div/div/div/div[3]/div")).getText();
assertEquals(true, happy.contains("Successfully"));

此版本运行正常,我能够验证警报消息。

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 2013-04-16
    • 2019-02-11
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多