Перейти к содержимому

FibYar

Регистрация: 13 сен 2012
Offline Активность: 30 июл 2017 16:01
-----

Мои сообщения

В теме: PageFactory, DefaultFieldDecorator и CacheLookup

22 апреля 2017 - 16:13

Выше глупость написал. Конечно, статический метод не будет сбрасывать кэши в отдельных локаторах.

Не знаю, относится ли этот комментарий ко всему ответу или только части, но за ответ спасибо. Как я понял, придётся сильно менять реализацию всего. Буду пробовать.


В теме: PageFactory, DefaultFieldDecorator и CacheLookup

19 апреля 2017 - 17:39

1)у тебя все как-то архисложно. DefaultFieldDecorator надо примерно использовать, как описано тут:

http://internetka.in...fielddecorator/

Вот как-то оттуда я всё и почерпнул) А сложно лишь для того, чтобы можно было написать свою аннотацию со своими особыми вариантами поиска.

 

А что кешируется? Свойства элемента, сам WebElement или только локатор?

WebElement кешировать небезопасно, поскольку это лишь некий временный ID, который выдает браузер, и после любого действия на странице он может стать недействительным. Тогда нужно дополнительно писать логику на то, в какой момент этот кэш будет сбрасываться.

Я хочу кешировать вебЭлемент лишь на короткий промежуток кода - когда я подряд провожу над ним несколько действий. Например, как в изначальном сообщении: сначала выполнить clear, затем sendKeys. Или же есть другая ситуация: я получаю свойства какого-то элемента (например, значение определенного атрибута или видимость элемента) и, в зависимости от него, делаю определенные действия уже над другим элементом. При этом результат записываю в переменную. И ещё результат переменной отписываю в лог. Самое главное - при каждом этом действии вызывается поиск элемента (а хочется лишь один раз - при присвоении переменной (а не при каждом считывании её значения)):

Boolean enabled = webElement.isEnabled(); //Поиск происходит здесь (запись значения)
logger.debug(enabled);                    //Поиск происходит здесь (а тут не хочу)
if (enabled) {                            //Поиск происходит здесь (и тут не хочу)
   //do something
}