Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Configuration {
- public static int timeout = 4000; //using milliseconds
- public static long pollingInterval = 100;
- }
- /*
- лучше поподробнее, например так
- */
- public class Configuration {
- //default interval for WaitFor.Until - smart waiting check one condition, in milliseconds
- public static int timeout = 4000;
- //interval between checks inside WaitFor.Until, in milliseconds
- public static int pollingInterval = 100;
- }
- **************************************
- public abstract class AbstractCondition<V> extends Condition<V> {
- ...
- public V apply(By locator) {
- ...
- V element = getWrappedEntity();
- /*
- тут мы еще не знаем - это элемент или список)
- корректнее назвать wrappedEntity )
- вместо element
- */
- *******************************************
- public abstract class AbstractCondition<V> extends Condition<V> {
- ...
- public String toString() {
- return String.format("[%s] for [%s] found by:[%s] expected [%s] actual [%s]",
- getClass().getSimpleName(), locator, identity(), expected(), actual());
- }
- /*
- все хорошо
- только добавь переходы на следующую строку
- т к может не удобно читать
- */
- *****************************************
- @Override
- public String identity() {
- if(getWrappedEntity() == null) {
- return "null";
- }
- else {
- return getWrappedEntity().toString();
- }
- }
- /*
- этот метод нам нужен потупее)
- достаточно чтобы он возвращал строки - "elements"("collection")
- посмотри - как используется этот метод в toString класса AbstractCondition<V>
- нам просто надо чуть уточнить фразу - написать - что за сущность
- нам надо написать -
- для коллекции так-то найденной
- для элемента так-то найденного
- тут все просто)
- */
- **************************************
- public abstract class ElementCondition extends AbstractCondition<WebElement> {
- /*
- и тут реализуй identity()
- только в этот раз - возращай строку "element"
- и уже в потомках - не надо
- */
- ****************************************
- public class ExactText extends ElementCondition {
- private String expectedText;
- private boolean isExactText = false;
- /*
- нам бы лучше сохранить сам actualText
- */
- ...
- @Override
- public boolean check(WebElement element) {
- if(element.getText().matches(expectedText)) {
- isExactText = true;
- }
- /*
- сохрани в переменную - actualText - element.getText()
- и возвращай actualText.equals(expectedText)
- не очень поняла - зачем тебе тут matches
- https://www.tutorialspoint.com/java/java_string_matches.htm
- */
- return isExactText;
- }
- @Override
- public String identity() {
- /*
- этот метод будет в предке
- касается всех без исключения кондишенов
- */
- @Override
- public String expected() {
- return "true";
- /*
- тут вернем ожидаемый текст
- */
- }
- @Override
- public String actual() {
- return Boolean.toString(isExactText);
- /*
- а тут - фактический
- */
- }
- /*
- если кондишены сравнивают тест - в actual() и expected()
- возвращаем тексты - ожидаемый и фактический
- если мы сравниваем размер - то соответственно - возвращаем размеры )
- если мы проверяем на что-то булевское - то да
- true & is... )
- */
- *******************************
- public class Text extends ElementCondition {
- /*
- можно отнаследоваться от ExactText
- или наоборот - ExactText отнаследовать от Text
- и в потомке - будет меньше кода)
- */
- }
- ************************************
- public class ListNthElementHasText extends CollectionCondition {
- ...
- @Override
- public boolean check(List<WebElement> element) {
- /*
- List<WebElement> - это не элемент
- это элементЫ
- поправь имя параметра
- */
- ************************************
- if (element != null) {
- isPresent = true;
- } else {
- isPresent = false;
- }
- /*
- isPresent = (element != null)
- и все)
- */
- **************************************
- http://joxi.ru/p275M9zs0eRl9r
- /*
- в этом пекедже сделай 2 пекеджа - element & collection
- и распредели кондишены и их предков - по соотвествкующим пекеджам
- общее и классы-контейнеры статических методов для вызовов кондишенов -
- оставь в корне пекеджа conditions
- */
- ********************************
- public static <V> V until(Condition<V> condition, long timeout) {
- ...
- throw new TimeoutException(String.format("Locator ['%s'] failed while waiting ['%s'] seconds to assert ['%s']"
- , locator.toString(), timeout / 1000, condition.toString()), lastError);
- }
- /*
- равняем сообщение
- failed while waiting ... seconds
- to assert __condition__
- посмотри какой toString у кондишена
- там и про локатор, и про кондишен, и про результаты
- не забудб про переходы на новую строку - чтоб оно было поаккуратнее
- */
Advertisement
Add Comment
Please, Sign In to add comment