Здесь нет ожидания, тест может упасть
Ожидание чего? открытия страницы? это вшито в GoToUrl(string)
Если же мы попадаем на эту страницу по клику по ссылке, действительно, нужно ожидание. Вот Вам такое:
using System;
using System.Threading;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using WatiN.Core;
namespace BDPUiTest.Tests
{
[TestFixture]
public class Learning
{
ChromeDriver Driver = new ChromeDriver();
[Test]
public void TestPositive()
{
Driver.Manage().Window.Maximize();
Driver.Navigate().GoToUrl("https://krsk.metro-cc.ru/?icid=ru:button:actions:opv");
var yesBtn = GetElementAfterWaiting("//div[@class='yes']");
yesBtn.Click();
Driver.Quit();
}
private IWebElement GetElementAfterWaiting(string xPath, int timeoutInSec = 30)
{
for (var i = 0; i < timeoutInSec; i++)
{
try
{
return Driver.FindElement(By.XPath(xPath)); //Пытаемся вернуть этот элемент
}
catch (Exception e)
{
if (e is NoSuchElementException || e.InnerException is NoSuchElementException) //Не знаю почему, но NoSuchElementException иногда оборачивается в другой эксепшн, я заводил тему недавно
{
Thread.Sleep(1000);//Тут можно использовать любое другое ожидание
}
else throw; //на случай каких-либо ещё эксепшенов, можно эту строчку убрать
}
}
throw new NoSuchElementException("Элемент не найден."); //Генерим NoSuchElementException, если по прошествии таймаута элемент так и не найден
}
}
}