如何在Selenium c#中声明分配给ElementId的值?

时间:2018-07-31 02:49:34

标签: c# .net selenium selenium-webdriver assertions

这应该很容易,但是以某种方式,我却无法按我希望的那样工作。我试图从下面的代码中声明 帐户值 ,该代码确实分配了ElementId。

我的目的是验证 帐户值 是否大于零(或者也可以做到!=零)

对于使用 GetAttribute 还是感到困惑,还是应该从ElementId中提取文本?

<div class="col-md-6 col-sm-12 w-create-account">
<label class="w-label">Value</label>
<h2 id="account-value">$1,00,000</h2>
</div>

我正在NUnit上使用Selenium(C#)。任何帮助表示赞赏.. !!

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

public static decimal ConvertToNumber(string str)
{
    return decimal.Parse(str, NumberStyles.Currency);
}


[Test]
public void TestAccountValue()
{

    Assert.IsTrue(ConvertToNumber(driver.FindElement(By.XPath("//div[contains(@class, 'w-create-account']/h2")).Text) > 0, "Account value is not greater than zero.");

}

如果您还有其他疑问,请告诉我。

答案 1 :(得分:1)

您可以使用以下逻辑进行断言

代码:

var accountValue=driver.FindElement(By.Id("account-value")).Text;
accountValue = accountValue.Substring(1);//Inorder to remove the currency symbol.

var amount = Decimal.Parse(accountValue);

Assert.IsTrue(amount > 0);//If the Amount value is greater than 0, then assertion wil be passed.

假设,如果帐户值也持有负余额,则将子字符串语句替换为以下条件

var accountValue=driver.FindElement(By.Id("account-value")).Text;

if (accountValue.Contains('-')){
    accountValue = "-" + accountValue.Substring(2);//Inorder to remove the currency symbol and negative sign
}
else
{
    accountValue = accountValue.Substring(1);//Inorder to remove the currency symbol.
}

var amount=Decimal.Parse(accountValue);

Assert.IsTrue(amount > 0);//If the Amount value is greater than 0, then assertion wil be passed.

答案 2 :(得分:0)

我正在此定价服务中使用

Assert.Greater(Convert.ToDouble(driver.FindElement(By.Id("account-value")).Text), 0,  
 "Acccount value is zero 0");

-表示,如果“帐户”值为零,则失败。

,或者如果要添加断言为零。可能像:

string accountValue = driver.FindElement(By.Id("account-value")).Text;  
Assert.IsFalse(accountValue.Contains("0"), "Account value is zero");  

-我希望它显示为文本,否则请使用.GetAttribute("value") =数字。