Как часто вы пишите свой код взамен основных методов webrdiver?

Добрый день!
Как часто вы заменяете стандартный функционал webrdiver своими методами (циклы там какие нибудь пишите со своими условиями выхода)?

  • всегда
  • часто
  • иногда
  • никогда
  • другое, напишу в комментариях

0 участников

И вообще это норма, или лучше все таки углубляться в функционал webdriver …

Просто на работе программисты вокруг, и у них как спросишь что нибудь, так сразу цикл предлагают какой нибудь или функцию …

Голый веб-драйвер не удобный.
Лучше использовать готовые фреймворки-обёртки, либо если у вас достаточно опыта - написать свой.

А можно Вас попросить привести пример, что Вы хотели сделать драйвером и на что Вам предложили это поменять?

Ну к примеру wait … предложили заменить на цикл …

Вы учитывайте еще тот факт что я дней 10 как пишу что-то вообще на webrdiver …
И то как я это вижу, что сейчас слишком много у меня повторяющегося кода … Думаю все это выкинуть в отдельный файл с функциями и вызывать уже потом функции, а в них просто передавать параметры … что-то типа FindElementByIdAndClick (параметр);

Если Вы только начинаете и у Вас нет ограничений по использованию библиотек и фреймворков, то сразу используйте Selenide. Полагаю, что он снимет основные вопросы, с которыми Вы сейчас столкнулись.

1 лайк

А стоит вообще сразу стартовать с фреймворков? Не лучше ли для начала поковырять код немного самому?
И если не сложно дайте посмотреть вообще хороший код просто понять куда двигаться … у меня вот что пока получается …

// заполняем поле E-mail
String email = "ivan85" + "+" + System.currentTimeMillis() + "@gmail.com";
WebElement selectMail = driver.findElement(By.id("reg_email"));
selectMail.sendKeys(email);

// заполняем первое поле фамилия

WebElement selectSurname = driver.findElement(By.id("last_name"));
selectSurname.sendKeys("Иванов");

// заполняем первое поле имя

WebElement selectName = driver.findElement(By.id("first_name"));
selectName.sendKeys("Иван");

// заполняем первое поле отчество

WebElement selectPatronymic = driver.findElement(By.id("middleName"));
selectPatronymic.sendKeys("Иванович");

// выбираем из списка по значению value и через wait ждем ответа в течении 10 секунд

WebElement tmp = driver.findElements(By.id("organization")).get(0);
Select selDr = new Select(tmp);

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("select2-search__field")));

selDr.selectByValue("E60EE044-341C-4679-BAEA-492B50F6DA6C");

Лучше конечно попробовать написать обертки самому, может они вас устроят и одну зависимость ты можете выкинуть. Плюс разберитесь с явными ожиданиями чтобы понять как вообще они работают, а потом уже когда осознаете что оберток нужно слишком много - обратитесь к готовым библиотекам.

2 лайка

Посмотрите в сторону паттерна - PageObject . Тоже сильно поможет улучшить код.

Если время позволяет, то можно.
Я, например, сторонник глубокого понимания того, что ты используешь. И к использованию библиотек и фреймворков приходил постепенно. Писал, что-то своё, пока мне этого хватало, то всё ок. Когда своё разрасталось, смотрел на то, что уже есть похожего и подходящего и переходил если видел целесообразность.

Конечно есть исключения, например фреймворк для запуска тестов я сам не писал, а сразу взял TestNG

Тут смотрите по ситуации и что Вам необходимо на данный момент. Если нужны тесты которые будут что-то проверять и по-быстрее и по-стабильнее, от лучше сразу готовый фреймворк. Если пожара нет, а Вы хотите детально во всём разбираться, то начинайте с голого вебдрайвера. И детально разбирайтесь в нём.

Как раз наоборот, лучше начать с Selenide, а уж потом, с опытом, можно и самому поковыряться.

См. Обёртка или чистый вебдрайвер?

3 лайка

+1. На работе обычно цель стоить - сделать, а не сидеть и обучаться за счёт работодателя в рабочее время, копаясь во внутренностях и разбираясь как оно и что работает.
Берите готовые решения, пилите тесты на них, а уж потом разбирайтесь.

1 лайк

Так не лучше ли в рабочее время посидеть поразбираться? Чем свое личное время тратить :slight_smile:

Ничто не мешает потом даже в Selenide поковыряться :grin:

Если вам позволяет кол-во работы/совесть/работодатель это делать - то конечно.

Но, любое нормальное развитие и повышение скиллов - это как ни крути трата личного времени.

1 лайк

С учетом того, что это для работы изучается, то вообще о какой трате времени может идти речь?!

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

Одно дело, когда работодатель посылает вас на курсы, а другое дело когда вы за рабочим местом вместо работы изучаете что-то :slight_smile:

то есть когда погромисты полдня проводят на стековерфлоу это нормально, а тестировщик не имеет право?

1 лайк

Но ведь вы изучаете не основы плетения крестиком, а вещи которые в дальнейшем будете использовать в этой же работе. Хотя конечно тратить целый день на изучение селениума когда куча новых фич не протестирована руками не стоит.
Автору поста посоветовал бы погуглить примеры PageObject/PageFactory в интернете очень много примеров которые помогут расставить все на свои места.
Мне в свое время помог этот видос https://www.youtube.com/watch?v=zCjNOIp7p3c