Size: a a a

2020 May 18

E

Eugene in atinfo chat
Сказочный Сникерс
если ты знаешь из за чего возникает, почему не добавишь цикл с ретраями?
имелось ввиду, что я знаком с StaleElementReferenceException, что вопрос не в том... ааа помогите вот тест падает на StaleElementReferenceException и что с этим делать.

а в том, что после инициализации веб элемента остановиться в дебаге и выполнить web_element.is_displayed() ответ будет True, а если выполнить actions.double_click(web_element) то будет StaleElementReferenceException

кликов нет, страница не перегружается.
источник

СС

Сказочный Сникерс... in atinfo chat
actions.double_click это разве не клик?
источник

СС

Сказочный Сникерс... in atinfo chat
открой исходники и посмотри что делает double_click и сразу все поймешь
источник

СС

Сказочный Сникерс... in atinfo chat
Eugene
имелось ввиду, что я знаком с StaleElementReferenceException, что вопрос не в том... ааа помогите вот тест падает на StaleElementReferenceException и что с этим делать.

а в том, что после инициализации веб элемента остановиться в дебаге и выполнить web_element.is_displayed() ответ будет True, а если выполнить actions.double_click(web_element) то будет StaleElementReferenceException

кликов нет, страница не перегружается.
а теперь сделай то же самое только

web_element.is_displayed()
web_element.click()
web_element.is_displayed()
источник

E

Eugene in atinfo chat
так он даже не кликает. я попробовал так web_element.click() - работает, а actions.click(web_element).perform() - не работает.
источник

E

Eugene in atinfo chat
Сказочный Сникерс
а теперь сделай то же самое только

web_element.is_displayed()
web_element.click()
web_element.is_displayed()
сделал.
True
выполнился клик
True
источник

E

Eugene in atinfo chat
хрен знает, что не так, почитал еще, типа что-то может пойти не так если front на REACT

суть в том что инпут не клинился. в старых проектах нашел self.actions.double_click(web_element).send_keys(Keys.DELETE, text, Keys.ENTER).perform() и это по прежнему там работает, а тут StaleElementReferenceException

решил так:
web_element.click()
for _ old_value:
  web_element.send_keys(Keys.BACKSPACE)
web_element.send_keys(new_value)
web_element.send_keys(Keys.ENTER)

не так элегантно, но работает. возможно действительно что-то из-за REACT, или я чего-то не понимаю.
источник

V

Vita in atinfo chat
Eugene
хрен знает, что не так, почитал еще, типа что-то может пойти не так если front на REACT

суть в том что инпут не клинился. в старых проектах нашел self.actions.double_click(web_element).send_keys(Keys.DELETE, text, Keys.ENTER).perform() и это по прежнему там работает, а тут StaleElementReferenceException

решил так:
web_element.click()
for _ old_value:
  web_element.send_keys(Keys.BACKSPACE)
web_element.send_keys(new_value)
web_element.send_keys(Keys.ENTER)

не так элегантно, но работает. возможно действительно что-то из-за REACT, или я чего-то не понимаю.
измерь скорость отклика и попробуй click().click() дважды вызвать у мышки
источник

V

Vita in atinfo chat
сама по себе б-ка для мыши работает так себе
источник

V

Vita in atinfo chat
то без перфом, то с ним работает.. от чего зависит, так и не понял
источник

SA

Scherbakov Alexey in atinfo chat
Без перформ не может работать, этот ж билдер
источник

E

Eugene in atinfo chat
спасибо, но я забил уже, какая то лажа с ActionChains и этим web_element. я пробовал всё, self.actions.double_click(web_element).perform() и просто self.actions.click(web_element).perform() и self.actions.send_keys_to_element(web_element).perform() сразу вылетает StaleElement... а если по старинке web_element.click(), а потом self.actions.key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).send_keys(Keys.DELETE, "new_value", Keys.ENTER)
то через раз, оно очищало поле. А если запихнуть в фор всё это, и перед каждым экшеном инить web_element, то там вообще берд иногда возникает, к примеру, в первый инпут оно нормально впишет новое значение, а во второй, может не по клинить и дописать в конец, вообщем, я забыл. Тот варик что выше написал, работает like a charm ))
источник

V

Vita in atinfo chat
Scherbakov Alexey
Без перформ не может работать, этот ж билдер
упаковал мои знания)
источник
2020 May 19

НС

Надежда Сопот... in atinfo chat
Всем привет. Пытаюсь разобраться с паттернами тестирования. Интересует page element (composite) паттерн.  Может есть у кого примеры, как вы реализовывали у себя на проекте этот паттерн, именно работа не с отдельными элементами, а описание высокоуровневых элементов страницы - таблицы, формы (для ввода) и прочее. Очень интересно посмотреть и разобраться, чтобы не оставить голую теорию(( Пока сама работала только с отдельными элементами. Спасибо заранее!!
источник

V

Vita in atinfo chat
ну пример для одной страницы:
файл с локаторами - тут хранишь селекторы

файл методов - импортируешь сюда локаторы и создаешь методы, например:
страница входа:

класс Авторизация
   метод ввести_логин:
         driver find elem (локатор поля логина) input value
   метод ввести_пароль:
         driver find elem (локатор поля пароля) input value
   метод кликнуть_вход:
         driver find elem (локатор кнопки) click

файл тестов - импорт методов

тест1:
Авторизация -> ввести_логин
Авторизация -> ввести_пароль
Авторизация -> кликнуть_вход
источник

SA

Scherbakov Alexey in atinfo chat
Надежда Сопот
Всем привет. Пытаюсь разобраться с паттернами тестирования. Интересует page element (composite) паттерн.  Может есть у кого примеры, как вы реализовывали у себя на проекте этот паттерн, именно работа не с отдельными элементами, а описание высокоуровневых элементов страницы - таблицы, формы (для ввода) и прочее. Очень интересно посмотреть и разобраться, чтобы не оставить голую теорию(( Пока сама работала только с отдельными элементами. Спасибо заранее!!
Вы можете написать свой врапер на любой элемент/ компонент который вам нужен. У нас на проекте мы используем такие кастомные элементы для чекбоксов, кнопок, инпут филдов и т.д.. После вы можете воспользоваться советом выше и собрать все элементы нужные для конкретной страницы в отдельный класс. Затем использовать такой класс с селекторами в классе самой страницы, где лежат методы управления ею.
Немного псевдо кода
myClassView->{ customButton = new customButton (css)}

MyPageClass->{
view = myClassView;
method doSomething()-> this.view.customButton.click()
}

По сути получается обычная композиция.
Composite pattern, о котором говорите вы, подразумевает, что ваши методы внутри страницы будут возвращать другие объекты, а те могут возвращать другие и т.д.. Т.е. , получается, что вам удобнее писать тесты, потому что все действия вы выполняете через точку.
источник

НС

Надежда Сопот... in atinfo chat
Всем спасибо!! Буду разбираться
источник

ЕС

Екатерина Смирнова... in atinfo chat
Всем привет, как можно проверить, что цвет элемента соответствует заявленному цвету?

Еще проблема может быть в том, что сам элемент белого цвета, НО при наведении мышкой или клику по нему становится пурпурным(вот это и надо проверить) + можно сделать hover, и тогда ок. Сам цвет #1b0d5e

Использую Python + Selenium

Никогда не сталкивалась, поэтому спрашиваю
источник

V

Vita in atinfo chat
Екатерина Смирнова
Всем привет, как можно проверить, что цвет элемента соответствует заявленному цвету?

Еще проблема может быть в том, что сам элемент белого цвета, НО при наведении мышкой или клику по нему становится пурпурным(вот это и надо проверить) + можно сделать hover, и тогда ок. Сам цвет #1b0d5e

Использую Python + Selenium

Никогда не сталкивалась, поэтому спрашиваю
источник

V

Vita in atinfo chat
Последний пункт посмотри
источник