我是断言的新手。 我想检查一个断言,如果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();
}
我知道出了点问题,但看不到。 也没有检查谷歌等。希望有人可以帮助我。 谢谢您的大力帮助。
答案 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;
}
您可以尝试使用此元素检查元素,然后让它作为布尔值返回。