c # Утверждение, чтобы проверить, если кнопка больше не доступна - тест - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в утверждениях.Я хочу проверить утверждение, если кнопки cookie больше нет на странице.Я использую C # с селеном и NUnit для тестирования с.Я также использую моделирование объекта страницы.

Надеюсь, что кто-то может мне помочь.

Это моя страница opbject.

    using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MakroTest
{
    class LandingPage
    {
        IWebDriver driver = new ChromeDriver();
        public IWebElement CookieButton => driver.FindElement(By.Id("cookie-bar-btn"));
        public IWebElement AlgemeneVoowaarden => driver.FindElement(By.LinkText("Algemene voorwaarden"));
        public IWebElement Contact => driver.FindElement(By.LinkText("Contact"));
        public IWebElement InlogCode => driver.FindElement(By.Id("FormModel_PromotionName"));
        public IWebElement Wachtwoord => driver.FindElement(By.Id("FormModel_Secret"));
        public IWebElement InlogButton => driver.FindElement(By.ClassName("button-secondary"));

        public void OpenWebsite()
        {
            driver.Url = DELETED THIS BECAUSE OF PRIVACY REASONS
            driver.Manage().Window.Maximize(); ;
        }

        public void ClickCookieButton()
        {
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            CookieButton.Click();
        }

        //Assert ClickCookieButton - geen button meer zichtbaar  WERKT NOG NIET
            public bool AssertCookieButtonDisplayed()
        {
            bool isDisplayed = CookieButton.Displayed;
            return isDisplayed;
        }


    }
}

И это моя тестовая страница

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using NUnit.Framework;
using OpenQA.Selenium.Support.UI;


namespace MakroTest
{
    class LoginTest
    {
       IWebDriver driver = new ChromeDriver();

      //  [SetUp]



    [Test]
      public void ShouldBeAbleToClickCookies()
        {
            LandingPage home = new LandingPage();  //Initialize the page by calling its reference
            home.OpenWebsite();
            home.ClickCookieButton();
            // assert toevoegen  
            Assert.Null(home.AssertCookieButtonDisplayed());
            home.CloseBrowser();
         }

Я знаю, что что-то не так, но не могу понять, что.Также проверил Google и т.д. Надеюсь, кто-то может мне помочь.Спасибо за вашу большую помощь.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019
   public static bool existsElement(IWebDriver _driver)
       {


        try
        {

            _driver.FindElement(by);

        }

        catch (NoSuchElementException ex)
        {
            Console.WriteLine("Message : " + ex.Message);
            Console.WriteLine("StackTrace: " + ex.StackTrace);
            return false;
        }
        catch(Exception ex)
        {
            Console.WriteLine("Message : " + ex.Message);
            Console.WriteLine("StackTrace: " + ex.StackTrace);
            return false;
        }


        return true;
    }

Вы можете попробовать проверить элемент с этим, а также дать ему вернуться как логическое значение.

0 голосов
/ 20 февраля 2019

Вы получите ошибку NoSuchElementException, если элемент больше не существует в dom, при попытке выполнить CookieButton.Displayed.Вы можете использовать try / catch и игнорировать ошибку, как показано ниже:

public bool AssertCookieButtonDisplayed()
{
    bool isDisplayed = false;
    try {
        isDisplayed = CookieButton.Displayed;
    }
    catch{}

    return isDisplayed;
}
...