У меня есть сайт со ссылкой внутри div.Проверка HTML-источника с веб-страницы выглядит следующим образом:
<div class="add-to-cart-wrapper">
<button data-tooltip="Only investments from the selected page will be sold." data-theme="dark" data-placement="top" data-tooltip-trigger="hover" data-id-list="48999040" class="btn btn-default tooltip-item trigger-sell-all">
Sell All
</button>
<a href="javascript:;" data-tooltip="Remove all investments from sale" data-placement="top" data-theme="dark" data-tooltip-trigger="hover" data-currency-iso-code="978" class="trigger-remove-all-sales">
<i class="fas fa-reply-all fa-flip-vertical"></i>
</a>
</div>
В браузере это выглядит так:
![enter image description here](https://i.stack.imgur.com/XioOQ.png)
ЧтоЯ на самом деле пытаюсь архивировать, чтобы нажать на эти две серые стрелки под кнопкой «Продать все».Что соответствует <a href="javascript:;" [...]>
К сожалению, следующий код C # для Selenium (Chromedriver) возвращает, что элемент в настоящее время не виден, хотя я могу нажать на него в браузере вручную:
var link = buttonWrapper.FindElement(By.ClassName("trigger-remove-all-sales"));
link.Click();
Сообщение об ошибке выглядит следующим образом:
OpenQA.Selenium.ElementNotVisibleException: «элемент не виден
(информация о сессии: хром = 68.0.3440.106) (информация Driver: chromedriver = 2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e), платформа = Windows NT 10.0.17134 x86_64) '
какие-либо предложения о том, как действовать?
РЕДАКТИРОВАТЬ: Согласно предложению, я добавил' wait.Until ("элемент x виден ")" согласно приведенному ниже коду.к сожалению, я сталкиваюсь с ошибкой тайм-аута:
new WebDriverWait(browser, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div.add-to-cart-wrapper a.trigger-remove-all-sales[data-tooltip='Remove all investments from sale']"))).Click();
OpenQA.Selenium.WebDriverTimeoutException: «Превышено время ожидания через 20 секунд»
В соответствии с предложением я попытался найтиЭлемент с .FindElement () Я заметил, что это свойство Displayed=false
![enter image description here](https://i.stack.imgur.com/cMmnw.png)
Я добавил Thread.Sleep(120000)
между ними и посмотрел вверхсвежий код, чтобы увидеть, что изменится.Это код тестирования:
var buttonWrapper = browser.FindElement(By.ClassName("add-to-cart-wrapper"));
var link = buttonWrapper.FindElement(By.ClassName("trigger-remove-all-sales"));
Thread.Sleep(120000);
buttonWrapper = browser.FindElement(By.ClassName("add-to-cart-wrapper"));
link = buttonWrapper.FindElement(By.ClassName("trigger-remove-all-sales"));
Даже после 2-минутного ожидания элемент найден, но все равно отображается как Displayed=false
В консоли разработчика Google Chrome я наблюдалэлемент и обнаружил следующее свойство: ![enter image description here](https://i.stack.imgur.com/Z1nQZ.png)
Существует прослушиватель событий для a.trigger-remove-all-sales, который может быть использован