Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //fetchWrappedElement.toString - это мне совсем не нравится, что лучше вместо него?
- @Override
- public WebElement getWrappedEntity() {
- ...
- throw new ElementNotFoundException(fetchWrappedElement.toString());
- ...
- /*
- тебе нужно описание не вебэлемента(он сейчас = нуллу, кстати)
- тут нужно описание иенно лейзи-элемента
- надо вызвать toString() этого же объекта = лейзи-элемента
- (toString() = this.toString())
- */
- *********************************
- public class LazyCollectionFoundByConditionElement extends AbstractLazyElement {
- ...
- @Override
- public WebElement fetchWrappedEntity() {
- for (LazyElement element : parentCollection) {
- if (element.is(condition)) {
- return element.getWrappedEntity();
- }
- }
- throw new ElementNotFoundException(String.valueOf(fetchWrappedEntity()));
- }
- /*
- посмотри на реализацию этого метода в LazyFilteredCollection
- оно менее красиво - но реально - там меньше действий - разворачиваний-заворачиваний)
- используй не String.valueOf(fetchWrappedEntity()),
- а как я уже выше писала - надо вызвать toString() этого же объекта = лейзи-элемента
- (toString() = this.toString())
- */
- ***************************************************
- public class LazyCollectionNthElement extends AbstractLazyElement {
- ....
- public WebElement fetchWrappedEntity() {
- try {
- return parentCollection.getWrappedEntity().get(index);
- } catch (IndexOutOfBoundsException e) {
- throw new LazyСollectionIndexOutOfBoundsException();
- }
- }
- /*
- и тут передавай в LazyСollectionIndexOutOfBoundsException - toString() этого же объекта = лейзи-элемента
- (toString() = this.toString())
- */
- *************************************************
- public boolean is(Condition<WebElement> condition) {
- try {
- condition.apply(this);
- return true;
- } catch (WebDriverException e) {
- return false;
- }
- }
- /*
- вместо
- condition.apply(this);
- return true;
- можно проще написать
- return condition.check(getWrappedEntity());
- чуть короче
- и чуть понятнее)
- */
- ********************************************
- /*
- раз сейчас не используешь параллельный запуск - убери или закомменть в pom
- кусок, отвечающий за параллельный запуск
- */
- ***********************************************
- public class CssClass extends AbstractCondition<WebElement> {
- ...
- @Override
- public boolean check(WebElement element) {
- String[] classes = element.getAttribute("class").split(" ");
- /*
- советую вернуть в actual() - полное значение из element.getAttribute("class")
- это будет полезнее
- подумай - что при текущем коде будет в actual()
- если проверка не выполнится
- */
- for (String attribute : classes)
- if (attribute.equals(cssClass)) {
- actualAttribute = attribute;
- return true;
- }
- /*
- и тут код упростится
- не забывай реформатировать код
- и вот про это
- https://google.github.io/styleguide/javaguide.html#s4.1.1-braces-always-used
- */
- return false;
- **********************************************
- public interface LazyEntity <T> extends DescribesEntity {
- public T getWrappedEntity();
- }
- ....
- public interface DescribesResult {
- public String expected();
- public String actual();
- }
- ....
- /*
- на уровне интерфейсов - модификаторы доступа не нужны
- объявленное в интерфейсе
- мы имплементируем в классе - как public
- */
- ***********************************************************
- public class LazyElementInnerCollection extends AbstractLazyCollection {
- ...
- @Override
- public List<WebElement> getWrappedEntity() {
- innerCollection = parentElement.getWrappedEntity().findElements(innerLocator);
- return innerCollection;
- }
- /*
- можно без потерь в одну строчку переписать
- */
- **************************************************
Advertisement
Add Comment
Please, Sign In to add comment