Проблема с проверкой содержимого WebElement - PullRequest
0 голосов
/ 28 сентября 2019

Я хочу подтвердить, что ожидаемый результат находится на этой странице, но я получаю сообщение об ошибке.Любая помощь приветствуется.

Вот код, который я использую:

        string ActualResult;
        string ExpectedResult = "nH-brand-logo";
        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("  ");
        driver.Manage().Window.Maximize();
        driver.FindElement(By.Id("user_email")).SendKeys("  ");
        driver.FindElement(By.Id("user_password")).SendKeys(" ");
        driver.FindElement(By.Id("user_submit")).Click();
        ActualResult = driver.FindElements(By.ClassName("nH-brand-logo"));
        if (ActualResult.Contains(ExpectedResult))
        {
            Console.WriteLine("Test Case Passed");
        }
        else
        {
            Console.WriteLine("Test Case Failed");
        }


        driver.Close();
        driver.Quit();



    }
}

}

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Код, который вы разместили, не будет компилироваться, потому что вы объявили ActualResult как переменную типа string, а FindElements возвращает ReadOnlyCollection<IWebElement>, что, безусловно, не строка.

Если вы хотите найти какой-либо элемент на странице, где атрибут class содержит "nH-brand-logo", тогда будет достаточно следующего:

var elements = driver.FindElements(By.ClassName("nH-brand-logo"));
bool testPassed = elements.Count > 0;

При вызове метода FindElements таким образом, если есть какие-либо возвращаемые элементы, каждый из них должен по определению содержать это значение в своем атрибуте class.Теперь, если вы хотите проверить что-то более сложное, чем это, полное решение может быть пропорционально более сложным.

Что нужно помнить при работе с Selenium:

  • FindElement находитэлемент или выбрасывает исключение.Если элемент не существует, он не возвращает нулевое или пустое значение;он выбрасывает.
  • FindElements возвращает все совпадающие элементы или пустой список, если ни один элемент не соответствует критерию поиска.Однако вам нужно получить доступ к элементам в возвращенном списке, чтобы получить информацию о любом найденном элементе.
0 голосов
/ 29 сентября 2019

Строка

ActualResult = driver.FindElements(By.ClassName("nH-brand-logo"));

вернет список элементов webElements, которые вы затем проверяете по строке.Отсюда ошибка.

 string ActualResult;
 string ExpectedResult = "nH-brand-logo";
 if (ActualResult.Contains(ExpectedResult))

, если вы хотите проверить, содержит ли все элементы ActualResults 'nH-brand-logo', вы можете написать

   bool result =  ActualResults.All(x=>x.GetAttribute("class").Contains('nH-brand-logo');

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...