Я пытаюсь передать CssSelector в настраиваемый метод ожидания, но мне трудно понять, почему он не может найти элемент.
Это CssSelector на BasePage.cs
public IWebElement ValidationErrorsPopup => Driver.FindElement(By.CssSelector("[class='_100 bigpad']"));
И это мой собственный метод в WebElementExtensions.cs
public static void WeElementsLocatedByCssSelector(this IWebElement element, int sec = 10)
{
WebDriverWait wait = new WebDriverWait(Driver.Browser(), TimeSpan.FromSeconds(sec));
wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(By.CssSelector(element.ToString())));
Console.WriteLine(element);
}
Затем я вызываю его в BasePage.cs и передаю так:
ValidationErrorsPopup.WeElementsLocatedByCssSelector();
Если я просто передаю CssSelector, это сработает, однако, когда я пытаюсь передать элемент в виде строки, ему это не нравится.
Что я здесь делаю не так? Любая помощь будет принята с благодарностью!
Да, но если я попытаюсь передать его как IWebElement, как предполагалось, я получаю «не могу преобразовать IWebElement в строку», поэтому я попытался передать его как строку.
А как насчет того, чтобы вызвать в element.ToString()?
Как только я удаляю ToString () из метода и пытаюсь передать 'element' в качестве IWebElement, мы получаем ошибку преобразования, поэтому это не вариант. В любом случае я пытался напрямую преобразовать элемент в строку, и это тоже привело к ошибке. Так неловко!
Java, но это не так уж сложно преобразовать в C#.





Почему вы пытаетесь передать его как
string...? Разве вы не называете этоIWebElementв сигнатуре методов?