【问题标题】:Xpath starts-with, ends-with validationXpath 以验证开始,以验证结束
【发布时间】:2018-11-15 08:12:27
【问题描述】:

我在 MTM 中进行自动化。

用户界面:

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

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

代码: for 1st test

所以我能够验证元素 $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"

我做错了什么?

【问题讨论】:

  • 欢迎来到 Stack Overflow!请阅读为什么a screenshot of code is a bad idea。粘贴代码并正确格式化。
  • $ 不是第一个字符。您正在提取以“总成本:...”开头的 DIV,因此“T”是第一个字符,这就是在考虑 starts-with() 时进行比较的内容。
  • 总成本: $12,983.30
    跨度>
  • 那么我怎样才能确认 $ 在数字之前呢?

标签: c# selenium-webdriver xpath microsoft-test-manager


【解决方案1】:

$ 不是第一个字符。您正在提取以“总成本:...”开头的 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 是否以“$”开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2015-01-05
    • 2020-05-27
    • 2020-09-20
    相关资源
    最近更新 更多