我在C#中使用Selenium C#,并试图编写一个断言,如果第一个字符串中的某些文本与第二个字符串中的部分文本相匹配,该断言将比较两个字符串并断言True。
string ActualValue = driver.FindElement(By.CssSelector("div.Toastify__toast.Toastify__toast--error")).Text;
Assert.IsTrue(ActualValue.Contains("There was an error validating your API key. Please contact Support and provide us with your public facing IP address:"));
我的'ActualValue‘字符串正在接收这个文本字符串,我需要将它与上面的字符串(减去IP地址)匹配:“验证您的API键时出错。请联系支持,并向我们提供您面向IP地址的公共信息:22.12.23.14”
此测试无法评估为True。
string ActualValue = driver.FindElement(By.CssSelector("div.Toastify__toast.Toastify__toast--error")).Text;
Assert.IsTrue(ActualValue.Contains("There was an error validating your API key. Please contact Support and provide us with your public facing IP address:"));
预期结果--由于第一个字符串包含在第二个字符串中,我希望assert.is真==真结果-I得到断言失败的消息: expect : true,但为False:False
发布于 2019-10-24 17:54:56
这是一个很好的学习机会,可以编写更好的断言来帮助调试这个问题和其他问题。不要编写一个计算结果为true
/false
的断言,而是编写一个会给您提供更多信息的断言。例如,当断言失败时,您将得到消息。
Expected: true
But was: false
不是很有帮助对吧?相反,请使用StringAssert.Contains()
,如
string expected = "There was an error validating your API key. Please contact Support and provide us with your public facing IP address:";
string actual = driver.FindElement(By.CssSelector("div#item")).Text;
StringAssert.Contains(expected, actual, "Verify error message.");
现在,当断言失败时,您将得到下面的信息。
"Verify error message."
Expected: String containing "There was an error validating your API key. Please contact Support and provide us with your public facing IP address:"
But was: "There was an error validating your API key. Please contact Support and provide us with your public facing IP address:22.12.23.14"
现在,如果您的字符串是不同的,您可以比较两者,看看问题所在。如果您已经比较了实际字符串和预期字符串,但没有看到任何区别,那么可能需要将它们作为ASCII值来查找不可打印的字符。
还有..。总是,总是,总是写一个断言注释。它是断言中继预期和实际之后的第三个字符串。
StringAssert.Contains(expected, actual, "Verify error message.");
它用作故障的标签,并将帮助您确定哪个断言实际失败。
发布于 2019-10-24 14:04:08
此代码运行良好:
selenium "default.html“的目标html
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div id="item">There was an error validating your API key. Please contact Support and provide us with your public facing IP address: 102.2.10.11</div>
</body>
</html>
var driver = new ChromeDriver();
driver.Url = "file:///C:/Users/Espen/source/repos/Test/default.html"; // path to website under test
var str = driver.FindElement(By.CssSelector("div#item")).Text;
Assert.IsTrue(str.Contains("There was an error validating your API key. Please contact Support and provide us with your public facing IP address:"));
我在想,要么你的文本在测试的任何一边有一个错误,要么你的选择器击中一个或多个目标。在针对特定元素时,我会考虑使用ids来选择类选择器而不是类选择器。
https://stackoverflow.com/questions/58548978
复制