我的代码上有两个公共空白,如何检查这两个公共空白是否相等。在这种情况下,我有两个相同的元素,我必须在某些东西之前和之后打印...
public static void TextAfterSubmit(IWebDriver driver, String element)
{
var aftersubmit =
driver.FindElement(By.ClassName("et_pb_contact_captcha_question")).Text;
Console.WriteLine("Captcha before Submit: " + aftersubmit);
}
public static void TextBeforeSubmit(IWebDriver driver, String element)
{
var beforesubmit =
driver.FindElement(By.ClassName("et_pb_contact_captcha_question")).Text;
Console.WriteLine("Captcha before Submit: " + beforesubmit);
}
...
SeleniumSetMethods.TextBeforeSubmit(driver, "et_pb_contact_captcha_question");
SeleniumSetMethods.TextAfterSubmit(driver, "et_pb_contact_captcha_question");
如何检查这些元素是否相等?
答案 0 :(得分:1)
允许函数返回结果
public static string TextAfterSubmit(IWebDriver driver, String element)
{
var aftersubmit =
driver.FindElement(By.ClassName("et_pb_contact_captcha_question")).Text;
Console.WriteLine("Captcha before Submit: " + aftersubmit);
return aftersubmit;
}
public static string TextBeforeSubmit(IWebDriver driver, String element)
{
var beforesubmit =
driver.FindElement(By.ClassName("et_pb_contact_captcha_question")).Text;
Console.WriteLine("Captcha before Submit: " + beforesubmit);
return beforesubmit;
}
使用它来比较结果
var before = TextBeforeSubmit(....);
// submit
var after = TextAfterSubmit(...);
if (string.Compare(before, after) != 0){
// ....
}
答案 1 :(得分:-1)
这两个方法基本上是相同的...相同的定位符并提取.Text
,因此将这两个方法合并为一个方法。唯一的区别是在提交之前和之后调用它的时间。您将需要从方法中返回值,并存储前后的值,并将它们与NUnit断言进行比较(或者您可以编写自己的断言,但我不建议这样做)。
新方法看起来像
public static string GetContact(IWebDriver driver)
{
return driver.FindElement(By.ClassName("et_pb_contact_captcha_question")).Text;
}
这部分测试看起来像
string beforeSubmit = SeleniumSetMethods.GetContact(driver);
// submit
string afterSubmit = SeleniumSetMethods.GetContact(driver);
Assert.AreEqual(beforeSubmit, afterSubmit, "Verify before and after submit text is the same");
如果失败,它将打印前后值,因此您不需要在方法本身中Console.WriteLine()
。
注意:GetContact()
可能不是您要提取的东西的好名字。我是根据定位器猜测的。