Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ========================================================================================================================
- public class Emails {
- ...
- @Step
- public Emails all() {
- return new Emails();
- }
- ну.... лучше просто return this
- и получается что этот ментод вообще лишний..
- >>>>>>>> с текущим подходом не лучше, потому что код
- .emails()
- .readed()
- .shouldHaveSize(1)
- .all()
- .shouldHaveSize(5)
- не будет работать как ожидалось)
- >>>> чорт, да, не будет... и это ОЧЕНЬ запутывает...
- ========================================================================================================================
- вот знаешь... я думаю плохой идеей было делать эти методы не статическими... пускай лучше бы они статическими были...
- а то как то конфузно слегка получилось...
- по сути
- @Step
- public Emails unreaded() {
- return new Emails("zE");
- }
- @Step
- public Emails readed() {
- return new Emails("yO");
- }
- это альтернативные "конструкторы"
- а конструктор - это "статическая штука" по своей природе...
- твой стиль был бы удобен если бы мы как то использовали поточный обьект this
- если бы ты как то брал то что есть в this и дополнительно его например фильтровал... и потом бы создавал на основе этого класс emails...
- а так... лучше просто статическими эти методы делать...
- >>>>>>>> если сделать статическими то в тест методах IDE не будет подсказывать что можно сделать, в случае если
- ты хочешь обратится к списку прочитанных\непрочитанных писем.... т.к. ты будешь стучатся к методу класса
- через его инстанс...
- согласен с тобой по поводу того что с точки зрения программирования это не кошерно, делать нестатические
- конструкторы, но пока не придумал как сделать лучше...
- филтровать нельзя, т.к. как ты из unreaded потом сделаешь all ? или readed?
- >>>> а вот в том то и дело что не нужно из unreaded делать all
- ты хочешь прыгнуть выше головы...
- мне вообще вот это:
- .emails()
- .readed()
- .shouldHaveSize(1)
- .all()
- .shouldHaveSize(5)
- кажется перебором... знаешь что обычно советуют в официальном деловом английском?
- строить простые предложения а не сложное
- вот и ты сделай так же
- незачем везде быть "fluent"
- закончи предложение кода для одного типа мейлов - и начни новое для другого типа
- мы же для того эти GIVEN WHEN THEN AND и придумали что бы разбивать длинные строчки на меньшие и в репорте что бы оно более читабельно было...
- и как раз статические конструкторы тебе в этом помогут, и никаких с ними проблем описаных тобой выше не будет...
- ========================================================================================================================
- еще... возможно стоило бы передавать бы в конструктор не кусок цсс - а целый локаторы в виде $$
- тогда бы эти статические конструкторы можно было бы запихнуть в InBox вообще...
- >>>>>>>> мне тоже не нравится что я оперирую строками, а не локаторами например, но у меня как то не получилось по
- нормальному сделать...
- >>>> ну если что то конкретное не получается - ты пиши... показывай код который не выходит, буду помогать... вместе будем думать...
- ========================================================================================================================
- public class Email {
- private final SelenideElement container;
- public Email(SelenideElement container) {
- this.container = container;
- }
- @Step
- public Email shouldHaveTopic(String topic) {
- container.find(".xY.a4W span").shouldHave(exactText(topic));
- return this;
- }
- @Step
- public Email shouldHaveAuthor(String author) {
- container.find(".yX.xY .yW span").shouldHave(exactText(author));
- return this;
- }
- }
- черт... обидно... ты тут сдублировал локаторы топика и автора...
- те что уже использовал тут:
- public class Emails {
- ....
- public Emails(String cssClass) {
- String css = "tr" + (cssClass.isEmpty() ? "" : "." + cssClass);
- mailsContainers = container.findAll(String.format("tr.%s", css));
- authors = container.findAll(String.format("%s .yX .yW>span", css));
- topics = container.findAll(String.format("%s .y6 span[id*=':']", css));
- ...
- }
- подумай как решить эту проблему...
- >>>>>>>> подумал, что можно удалить этот класс и решить все проблемы :)
- жаль, что столько проблем из за того, что у By нет аппендера, чтоб можно было
- несколько By склеить в один, а достать их оттуда тоже проблемно.... не хочется писать
- парсер тустринга.
- >>> не нужно никаких парсеров
- ну вот и удали этот класс... виджеты - это круто - но не всегда их получается реализовать красиво... нужно держать баланс...
- я тебе скинул там переписку с солнцевым... если мы реализуем в селениде эту штуку - тогда все станет проще в твоем коде...
- и я кстати хотел предложить тебе реализовать это - законтрибьютишь как раз в селениде, поднимешь свою карму, да и хорошый бонус к резюме...
- вот только ты наверное сможешь это сделать, уже после того как вторую половину курса пройдешь...
Advertisement
Add Comment
Please, Sign In to add comment