Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class WaitFor {
- ...
- private Throwable lastError;
- /*
- эта переменная нужна только внутри метода until
- там ее объяви
- на уровне объекта - она не нужна
- */
- ********************************
- public <V> V until(Condition<V> condition) throws WebDriverException {
- /*
- тут тоже не нужен throws WebDriverException
- */
- *******************************
- http://joxi.ru/Vm6QqxphxMbkQr
- /*
- со структурой пекеджа conditions поработаем
- делаем тут пекедж element
- и переносим туда - 1, 2 и 3 - то что относится к реализации работы конкретно с
- кондишенами ElementCondition
- делаем пекедж collections
- и переносим туда - 4, 5, и 6
- остальное - останется в корне пекеджа conditions
- это или общее
- или классы контейнеры - 8 и 7 - их глубже прятать большого смысла нету
- дальше кондишенов будет прибавляться
- и все они будут в пекеджах conditions \ element или conditions \ conditions
- будет легче ориентироваться
- */
- *********************************
- public abstract class AbstractCondition<V> implements Condition<V>{
- this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".")+1)
- /*
- есть такой метод getSimpleName
- http://www.tutorialspoint.com/java/lang/class_getsimplename.htm
- http://stackoverflow.com/questions/15202997/what-is-the-difference-between-canonical-name-simple-name-and-class-name-in-jav
- */
- ********************************
- return String.format(this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".")+1) +
- "\nfor %s %s, found by: %s locator \nexpected %s to be %s,\n" +
- "actual %s is %s", elementOrElements(), elementsString(), locatorString(), resultDescription(),
- expectedResultString(), resultDescription(), actualResultString());
- /*
- ну, ту попроще можно
- ниже приведу пример - как попроще, уже с красивыми именами
- а ты подумай и реализуй потробности)
- */
- return getClass().getSimpleName() +
- "\nfor " + identity() + " found by: " + locator +
- (expected() == "" ? "" : "\nexpected: " + expected()) +
- (actual() == "" ? "" : "\nactual: " + actual());
- /*
- identity() - это твой elementOrElements()
- locator - будет у тебя в этом классе, когда реализуешь 263-274 прошлого ревью
- (можешь пока пропустить, потом вернуться)
- expected() и actual() - думаю, понятно и так
- */
- **********************************************
- public class Visible extends ElementCondition {
- private WebElement element;
- private By locator;
- @Override
- public WebElement apply(By locator) {
- element = getWebDriver().findElement(locator);
- return element.isDisplayed()?element:null;
- /*
- вспомни - как ты делала в ранее разработанных кондишенах
- в apply - сначала сохраняла то, на основании чего выводы делала
- и этим пользовалась - и принимая решение, и выводя фразу в toString
- тут - тоже самое
- анализируемое состояние = element.isDisplayed()
- вот тут и сохрани это в булевскую переменную
- и далее - на основании ее значения - делай выводы и описывай фактический результат
- мы уже обсуждали - почему так лучше, тут не повторяюсь)
- */
- }
- ....
- @Override
- public String actualResultString() {
- return String.valueOf(element.isDisplayed());
- }
- /*
- не надо уже вебэлемент тут трогать
- у тебя есть зафиксинованное состояние
- */
- ******************************************************
- public String locatorString() {
- return locator.toString().split(" ")[1];
- }
- /*
- не надо улучшать локатор)
- это может путать)
- просто - выводим локатор как есть
- пока так
- потом будет лучше
- */
- ********************************
- /*
- в целом - в правильном направлении движешься
- продолжай в том же духе)
- */
Advertisement
Add Comment
Please, Sign In to add comment