Как исправить код автоматизации тестирования с помощью Selenium с C #? - PullRequest
0 голосов
/ 06 октября 2019

Я впервые работаю над автоматизированными тестами, используя Selenium с C #. Я следую некоторым инструкциям для новичка по этой ссылке . Тем не менее, это не работает. Там написано 1 тест не пройден. У меня есть следующий код:

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;


namespace OnlineStore.TestCases
{
    class LogInTest
    {
        [Test]
        public void Test()
        {
            IWebDriver driver = new ChromeDriver();
            driver.Url = "http://www.store.demoqa.com";

            // Find the element that's ID attribute is 'account'(My Account) 
            driver.FindElement(By.XPath(".//*[@id='account']/a")).Click();

            // Find the element that's ID attribute is 'log' (Username)
            // Enter Username on the element found by above desc.
            driver.FindElement(By.Id("log")).SendKeys("testuser_1");

            // Find the element that's ID attribute is 'pwd' (Password)
            // Enter Password on the element found by the above desc.
            driver.FindElement(By.Id("pwd")).SendKeys("Test@123");

            // Now submit the form.
            driver.FindElement(By.Id("login")).Click();

            // Find the element that's ID attribute is 'account_logout' (Log Out)
            driver.FindElement(By.XPath(".//*[@id='account_logout']/a")).Click();

            // Close the driver
            driver.Quit();

        }
    }
}

и следующее сообщение:

[10/6/2019 5:05:53 AM Informational] Executing test method 'OnlineStore.TestCases.LogInTest.Test'
[10/6/2019 5:05:53 AM Informational] ------ Run test started ------
[10/6/2019 5:05:54 AM Informational] NUnit Adapter 3.15.1.0: Test execution started
[10/6/2019 5:05:54 AM Informational] Running selected tests in C:\Users\enead\source\repos\OnlineStore\OnlineStore\bin\Debug\OnlineStore.dll
[10/6/2019 5:05:55 AM Informational]    NUnit3TestExecutor converted 1 of 1 NUnit test cases
[10/6/2019 5:05:55 AM Informational] NUnit Adapter 3.15.1.0: Test execution complete
[10/6/2019 5:05:55 AM Informational] ========== Run test finished: 1 run (0:00:01.8817664) ==========

Я искал несколько сайтов, чтобы найти ответ, но безуспешно. Что случилось? Что я могу сделать?
Правка
Я предоставляю несколько скриншотов.

1 Test failed

Error message

Error after specifying the location of the driver

Ответы [ 2 ]

1 голос
/ 06 октября 2019
  1. В верхней части этой страницы есть баннер, который блокирует элемент «account». enter image description here Вам нужно добавить шаг теста, где вы нажимаете, чтобы сначала «отклонить» этот баннер.

driver.FindElement(By.LinkText("Dismiss").Click();

Скрипт в Visual Studio всегда будет двигаться быстрее, чем браузер, поэтому вам нужно добавить в скрипт шаги, в которых вы ожидаете загрузки страницы, прежде чем нажимать на новые элементы.

Легкоспособ сделать это - использовать статический метод ожидания, подобный следующему:

Task.Delay(2000).Wait();

Вам также необходимо добавить: using System.Threading.Tasks;

'2000' - это количество миллисекунд, которое вы хотитеwait.

Более динамичный способ ожидания - сначала создать метод wait, а затем вызывать этот метод всякий раз, когда вы хотите wait, чтобы произошло что-то конкретное (в этом случае ожидание ссылки на аккаунтclickable).

Создание метода динамического ожидания и его использование выглядит следующим образом:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("By.LinkText("My Account"))).Click();

Для этого метода вам также необходимо: using OpenQA.Selenium.Support.UI;

1 голос
/ 06 октября 2019

Глядя на снимок экрана с сообщением об ошибке, вам нужно указать местоположение файла chromedriver.exe при инициализации драйвера в вашем тесте.

IWebDriver driver = new ChromeDriver("location_of_chromedriver.exe");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...