Код:
var waitmis = new WebDriverWait(Driver, TimeSpan.FromSeconds(300000));
Отправлено 11 апреля 2016 - 13:15
Код:
var waitmis = new WebDriverWait(Driver, TimeSpan.FromSeconds(300000));
Отправлено 11 апреля 2016 - 13:18
Нужно ожидание
Отправлено 11 апреля 2016 - 13:58
ожидание установлено в первой строке кода
Отправлено 11 апреля 2016 - 14:13
не то ожидаете, следовательно, я и написал, что нужно ожидание.
Отправлено 12 апреля 2016 - 09:33
Вы ждете просто появления элемента. И элемент у вас находится, но он не видимый, поэтому и клик не выходит.
Ожидайте пока элемент станет видимым кликабельным (это не тоже самое, что и ElementExists).
(спс за поправку)
Отправлено 12 апреля 2016 - 09:44
Вы ждете просто появления элемента. И элемент у вас находится, но он не видимый, поэтому и клик не выходит.
Ожидайте пока элемент станет видимым (это не тоже самое, что и ElementExists).
Кликабельным
Отправлено 12 апреля 2016 - 09:47
Да, Вы правы, обычно и ищут именно кликабельные.Вы ждете просто появления элемента. И элемент у вас находится, но он не видимый, поэтому и клик не выходит.
Ожидайте пока элемент станет видимым (это не тоже самое, что и ElementExists).
Кликабельным
Отправлено 12 апреля 2016 - 12:03
Селениум не всегда способен определить готов ли элемент для клика.
Отправлено 13 апреля 2016 - 09:23
А с помощью чего это можно сделать?
Отправлено 14 апреля 2016 - 07:59
А с помощью чего это можно сделать?
По косвенным признакам определять закончилась ли загрузка страницы и отработали ли необходимые скрипты. Узнать у разработчика, чего конкретно ждёт кнопка.
Отправлено 26 мая 2016 - 11:14
Отправлено 27 мая 2016 - 08:34
Никаких косвенных признаков не надо:var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutSeconds));wait.Until(ExpectedConditions.ElementToBeClickable(by));
Не всегда это приводит к нужному результату, во всяком случае в моей практике. Бывает такое, что кнопка вроде бы и кликабельна, но при нажатии ничего не происходит, ибо на странице не отработали какие-то нужные скрипты, так что это ожидание не универсально.
Отправлено 27 мая 2016 - 13:51
Никаких косвенных признаков не надо:var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutSeconds));wait.Until(ExpectedConditions.ElementToBeClickable(by));
Не всегда это приводит к нужному результату, во всяком случае в моей практике. Бывает такое, что кнопка вроде бы и кликабельна, но при нажатии ничего не происходит, ибо на странице не отработали какие-то нужные скрипты, так что это ожидание не универсально.
Полностью согласен, поведение webdriver, как и IDE часто не предсказуемо.
Но для простых случаев, например когда кнопка скрыта каким-либо div-ом данное решение подойдет.
Отправлено 27 мая 2016 - 16:08
Код:
waitmis.Until(ExpectedConditions.ElementExists(By.XPath("//html/body/div[1]/div[1]/ul/li[1]/ul/li[2]/a")));var search = Driver.FindElement(By.XPath("//html/body/div[1]/div[1]/ul/li[1]/ul/li[2]/a"));
За такие XPath нужно линейкой по пальцам бить!
0 пользователей, 1 гостей, 0 анонимных