Сделать кастомное ожидание на свойство Display
Необходимо реализовать кастомное ожидание для свойства Display.
Вот два варианты будут ли они валидны к данному заданию или необходимо переделать?
Основная часть кода для поиска элемента
[TestFixture]
public class Tests
{
private IWebDriver _chromeDriver = new ChromeDriver();
private CustomDisplay custom = new CustomDisplay();
[SetUp]
public void Setup()
{
_chromeDriver.Navigate().GoToUrl("https://www.google.com/");
}
[Test]
public void Test1()
{
var xPath = "//input[@name='q']";
_chromeDriver.FindElement(By.XPath(xPath));
var rezult = custom.FirstTryIsElementDisplay(xPath, _chromeDriver, _chromeDriver.Url);
Assert.IsTrue(rezult);
}
}
Первый вариант.
public bool FirstTryIsElementDisplay(string webpath, IWebDriver driver, string urlForSearchElement)
{
bool result = false;
driver.Navigate().GoToUrl(urlForSearchElement);
try
{
result = driver.FindElement(By.XPath(webpath)).Displayed;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return result;
}
И второй вариант. В нем я использовал явное ожидание. Кстати насколько правильно использовал еще вопрос.
public bool SecondTryIsElementDisplay(string webpath, IWebDriver driver, string urlForSearchElement)
{
bool result = false;
driver.Navigate().GoToUrl(urlForSearchElement);
try
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement webElement = wait.Until<IWebElement>((d) => d.FindElement(By.XPath(webpath)));
result = webElement.Displayed;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return result;
}