Size: a a a

QA — Автоматизация

2020 December 27

CM

Chumachenko Mihail in QA — Автоматизация
Andrei Solntsev
Так значит, просто не надо делать это задание. Пусть его перенаправят тому, кто понимает принцип. Зачем давать руль неводителю?
Учеба...
источник

CM

Chumachenko Mihail in QA — Автоматизация
Evgenii B
За вас прочитать документацию? :)
Резонно, отрезвило, спасибо
источник

S1

Sceptic 1234 in QA — Автоматизация
Всем привет!
Народ, я же правильно понимаю, что @FindBy WebElement при вызове переменной каждый раз заново перенаходит элемент?
Если да, то как может быть, что я ловлю stale element exception вызывая клик селениумом и передавая в него переменную с элементом, инициализированным фабрикой?
источник

S1

Sceptic 1234 in QA — Автоматизация
Похоже дело не в фабрике
попробовал вызвать напрямую через
findElement(By.xpath(firstDraftMessageXpath));
и так же получаю stale element с вероятностью примерно 60-70% и в 30% клик происходит нормально
у меня одно лишь предположение, что элемент перерендеривается в те доли секунды что проходят между получением айдишника по локатору и отправкой команды на клик.
кто нибудь сталкивался с таким?
источник

IC

Ilya L Che in QA — Автоматизация
Если там списки, то может быть всякое. Типа, с сервера пришло 5 элементов. Фронт сперва показывает один, потом два, три и т.д.
источник

A

Alexander in QA — Автоматизация
Sceptic 1234
Похоже дело не в фабрике
попробовал вызвать напрямую через
findElement(By.xpath(firstDraftMessageXpath));
и так же получаю stale element с вероятностью примерно 60-70% и в 30% клик происходит нормально
у меня одно лишь предположение, что элемент перерендеривается в те доли секунды что проходят между получением айдишника по локатору и отправкой команды на клик.
кто нибудь сталкивался с таким?
У меня такая же фигня при клике по ссылке  в таблице . Причем пробовал переопределять метод findElement с явным ожиданием, но не принесло плоды .
источник

S1

Sceptic 1234 in QA — Автоматизация
причём под дебагом всё ок работает. видимо в момент когда я пытаюсь кликнуть там активная загрузка списка происходит и элементы супер быстро меняют айдишники
источник

A

Alexander in QA — Автоматизация
Попробуй в try catch засунуть . Если ошибка , то в catch ещё раз попытаться сделать тоже самое
источник

DN

Dmitrii Novikov in QA — Автоматизация
Sceptic 1234
причём под дебагом всё ок работает. видимо в момент когда я пытаюсь кликнуть там активная загрузка списка происходит и элементы супер быстро меняют айдишники
Сталбыть, надо чего-то подождать. Может быть, завершения асинхронных запросов.
источник

S1

Sceptic 1234 in QA — Автоматизация
Да, видимо так. Понять бы ещё где там события эти, на которые подождать надо
источник

DN

Dmitrii Novikov in QA — Автоматизация
Sceptic 1234
Да, видимо так. Понять бы ещё где там события эти, на которые подождать надо
Посмотрите вот тут принцип: https://m.habr.com/ru/post/111649/
источник

S1

Sceptic 1234 in QA — Автоматизация
Спасибо!
источник

DS

Denis Shtuka in QA — Автоматизация
Подскажите, как взаимодействовать с сайтом через Selenium (python), если программа видит всю структуру HTML кода как множество функций JS’ов? В DevTools’е браузера всё как нужно, просто бери и работай, а вот для программы всё сжато. Чтобы убедиться, что видит программа, использую сохранение страницы: .page_source.encode("utf-8") и .save_screenshot()
источник

EY

Evgeniy Yakovlev in QA — Автоматизация
JS чем-то дергается, обычно. Вот селениумом надо взаимодействовать с "чем-то", кнопкой например.
источник

IC

Ilya L Che in QA — Автоматизация
Denis Shtuka
Подскажите, как взаимодействовать с сайтом через Selenium (python), если программа видит всю структуру HTML кода как множество функций JS’ов? В DevTools’е браузера всё как нужно, просто бери и работай, а вот для программы всё сжато. Чтобы убедиться, что видит программа, использую сохранение страницы: .page_source.encode("utf-8") и .save_screenshot()
> Видит структуру HTML кода как множество функций JS'ов
А как это вообще? Можно пример небольшой?
источник

DS

Denis Shtuka in QA — Автоматизация
Ilya L Che
> Видит структуру HTML кода как множество функций JS'ов
А как это вообще? Можно пример небольшой?
Для примера. Нужно найти данный input и ввести значение (Скрин 1), так для него выглядит путь в DevTools. В свою очередь программа видит это вот так (Скрин 2). На втором скрине стрелкой выделил фрейм в котором содержится input, но этот фрейм закрыт и соответственно программа не может с input’ом работать.
источник

DS

Denis Shtuka in QA — Автоматизация
Ilya L Che
> Видит структуру HTML кода как множество функций JS'ов
А как это вообще? Можно пример небольшой?
источник

IC

Ilya L Che in QA — Автоматизация
Denis Shtuka
Для примера. Нужно найти данный input и ввести значение (Скрин 1), так для него выглядит путь в DevTools. В свою очередь программа видит это вот так (Скрин 2). На втором скрине стрелкой выделил фрейм в котором содержится input, но этот фрейм закрыт и соответственно программа не может с input’ом работать.
Что-то странное. По идее, этот код на C# должен сервером обработаться для получения нормального html, который уже отсылается браузеру. Там точно ниже нет нормального input не из скрипта? Если на скриншотах сайт выглядит нормально, то должен быть где-то DOM с элементами.
источник

DN

Dmitrii Novikov in QA — Автоматизация
Почитайте про фреймы. Там надо драйверу явно указать переключиться на этот фрейм. Иначе, да, не видит
И потом важно вспомнить переключиться обратно из этого фрейма )

https://www.guru99.com/handling-iframes-selenium.html
источник

DS

Denis Shtuka in QA — Автоматизация
Dmitrii Novikov
Почитайте про фреймы. Там надо драйверу явно указать переключиться на этот фрейм. Иначе, да, не видит
И потом важно вспомнить переключиться обратно из этого фрейма )

https://www.guru99.com/handling-iframes-selenium.html
Благодарю, нашел решение.
Для того чтобы программа начала работать с фремами, нужно их открыть ей.
Делается это так: driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
...
Работа со всем содержимым
...
В конце работы закрыть: driver.switch_to.default_content()
источник