如何检查两个公共空隙是否相等

时间:2019-05-23 19:53:24

标签: c# selenium

我的代码上有两个公共空白,如何检查这两个公共空白是否相等。在这种情况下,我有两个相同的元素,我必须在某些东西之前和之后打印...

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");

如何检查这些元素是否相等?

2 个答案:

答案 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()可能不是您要提取的东西的好名字。我是根据定位器猜测的。