首页 > 解决方案 > Xpath 以验证开始,以验证结束

问题描述

我在 MTM 中做自动化。

用户界面:

低至:$12,983.30 $108.19 120 5.43%

  1. 我需要验证数字 12,983.30 以 $ 开头
  2. 我需要验证数字 5.43 以 % 结尾

代码: 第一次测试

所以我能够验证元素 $12,983.30 存在并且有 $:

"xpath" "//*[+id='-student-loan-finder-form']/div/div[17]/div[2]/div[2]/div[2][text()[contains(., '$')]]" "Total Cost has $" "true" 

但我没有成功验证数字是否以 $ 开头:

"xpath" "//*[+id='-student-loan-finder-form']/div/div[17]/div[2]/div[2]/div[2][text()[starts-with(., '$')]]" "Total Cost starts with $" "true"

我做错了什么?

标签: c#selenium-webdriverxpathmicrosoft-test-manager

解决方案


$ 不是第一个字符。您正在提取以“总成本:...”开头的 DIV,因此“T”是第一个字符,这就是在考虑时比较的内容starts-with()

有很多方法可以做到这一点。可能最简单的方法是用“:”分割返回的文本,然后Trim()查看第二部分。

鉴于您发布的 HTML

<div class="col-md-2 col-sm-12 totalCostLow">
    <span class="mobile-label">Total Cost: </span>
    $12,983.30
</div>

从外部获取文本DIV将返回类似(空格可能不同)

"Total Cost:  $12,983.30 "

您可以使用“:”拆分该字符串

"Total Cost", "  $12,983.30 "

抓住第二根弦,Trim()

"$12,983.30"

然后确保第一个字符是“$”

该代码看起来像

string priceString = <get the price string>; // e.g. "Total Cost:  $12,983.30 "
string price = priceString .Split(':')[1].Trim();

现在您可以验证它price以“$”开头。


推荐阅读