C # + Selenium: автоматизация ожидания - PullRequest
0 голосов
/ 28 августа 2018

Приведенный ниже код не работает, и он всегда выдает Нет такого исключения элемента в строке 2.

wait.IgnoreExceptionTypes(typeof(NoSuchElementException));      
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(element)));

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Также возможно, что вы не используете свой браузер в полноэкранном режиме, по крайней мере, это была действительная проблема, с которой я столкнулся, когда графический интерфейс моих текущих проектов был изменен. Добавление driver.Manage().Window.Maximize(); к моему ClassInitialize решило проблему по прихоти.

Другой вариант: возможно, ваш элемент либо встроен в iframe, либо перекрывается одним.

0 голосов
/ 28 августа 2018

Как уже упоминалось в этом ответе https://stackoverflow.com/a/44724688/6045154, я решил похожую проблему с:

IWebElement button = driver.FindElement(By.ClassName("transfer__button")); IJavaScriptExecutor executor = (IJavaScriptExecutor)driver; executor.ExecuteScript("arguments[0].click();", button);

Конечно, это нужно отредактировать, чтобы найти нужный элемент по правому селектору.

0 голосов
/ 28 августа 2018

Здесь может быть 2 вопроса:

  1. Вы пытаетесь найти элемент до того, как он станет видимым, для этого вы можете подождать элемента, выполнив

    wait.Until(ExpectedConditions.ElementExists(By.XPath(element)));
    

    где element - это XPath элемента, который вы пытаетесь найти.

  2. Вы не нашли элемент, используя правильный XPath. Если вы используете абсолютный XPath, избегайте этого, поскольку абсолютный XPath может быстрее находить элемент, но при изменении структуры DOM ваш путь может больше не работать.

...