c#断言以检查按钮是否不再可用-测试

时间:2019-02-20 10:36:49

标签: c# selenium selenium-webdriver assertion

我是断言的新手。 我想检查一个断言,如果cookie按钮不再在页面上。 我正在使用C#和硒以及NUnit进行测试。我也在使用页面对象建模。

希望有人可以帮助我。

这是我的页面对象页面。

    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();
         }

我知道出了点问题,但看不到。 也没有检查谷歌等。希望有人可以帮助我。 谢谢您的大力帮助。

2 个答案:

答案 0 :(得分:0)

如果尝试执行NoSuchElementException时dom中不再存在该元素,则会出现CookieButton.Displayed错误。您可以使用try / catch并忽略如下错误:

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

    return isDisplayed;
}

答案 1 :(得分:0)

   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;
    }

您可以尝试使用此元素检查元素,然后让它作为布尔值返回。