Функция щелчка Selenium JavaScriptExecutor работает только в первый раз - PullRequest
0 голосов
/ 30 ноября 2018

В пользовательском интерфейсе у меня есть кнопка checkAll, которая реализована в виде span под блоком div.щелкнув по нему стало трудно, поэтому я использовал JavaScriptExcutor.Я хочу щелкнуть по нему два раза.код состоит из следующих 6 строк.строка 3 всегда выполнялась успешно, но строка 6 всегда молча терпит неудачу (без ошибок или исключений, но щелчок не происходит).если я закомментирую строку 3, то строка 6 будет функционировать.Зачем?пожалуйста, помогите мне.

IJavaScriptExecutor executor = (IJavaScriptExecutor)drv;
IWebElement chkAll = TaskerStatus.FindElement(By.Id("header3-column0"));
executor.ExecuteScript("arguments[0].click();", chkAll);

cmdBar1collapseAll.Click();
expandAllBtn.Click();
executor.ExecuteScript("arguments[0].click();", chkAll);

1 Ответ

0 голосов
/ 01 декабря 2018

Если я правильно понял вариант использования / вопрос , Строка 6 , т. Е.

executor.ExecuteScript("arguments[0].click();", chkAll);

не удалось молча, то есть без ошибок или исключений, и click() также не происходит.

Но опять же, если вы закомментируете line 3 то есть первый экземпляр:

executor.ExecuteScript("arguments[0].click();", chkAll);

Тогда line 6 то есть второй экземпляр:

executor.ExecuteScript("arguments[0].click();", chkAll);

функционирует хорошо.

Причина Строка 6 не работает, потому что, когда вы вызвали click() на IWebElement chkAll a JavaScript / jQuery мог быть активным.

Решение

Вам нужно вызвать WebDriverWait для IWebElement chkAll должно быть clickable , прежде чем вызывать щелчок на Line 6 и вы можете обновить Строка 6 следующим образом:

executor.ExecuteScript("arguments[0].click();", new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(TaskerStatus.FindElement(By.Id("header3-column0")))));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...