Перейти к содержимому

Публикации TatyanaV

72 публикаций создано TatyanaV (учитываются публикации только с 13 мая 2023)



#169940 Пропадают введенные данные в поле типа Дата после сохранения формы

Отправлено автор: TatyanaV 07 декабря 2018 - 10:21 в Автоматизированное тестирование

Что делать?

Разбираться.

Я бы посмотрела, что будет, если вручную ввести тоже самое. Может быть это само приложение считает дату некорректной и сбрасывает её?

В любом случае, дебаг никто не отменял. Поставьте брейкпоинты и по-шагово пройдите тест свой - найдёте, на каком конкретном шаге дата пропадает.




#172546 Тестирования с использование WebDriver на C#

Отправлено автор: TatyanaV 10 июня 2019 - 09:06 в Автоматизированное тестирование

Вы не знаете, что Вы делаете в тестируемой системе, чтобы залогиниться?

Обычно - ввод логина, ввод пароля, клик по кнопке для авторизации.




#171930 Ребята помогите создать блок схему!

Отправлено автор: TatyanaV 23 апреля 2019 - 08:08 в Начинающему тестировщику

Ну, создавайте, раз нужно. В чем проблема? 

Или нужно, чтоб Вам тут готовое решение сразу выдали, а Вам только результат переотправить?

Если помощь нужна - покажите, что уже успели сделать, на чем "споткнулись", какие вопросы возникли и т.д.




#172630 Не находит кнопку (no such element: Unable to locate element)

Отправлено автор: TatyanaV 19 июня 2019 - 06:56 в Selenium - Functional Testing

Есть вероятность, что Ваш скрипт просто пытается кликнуть по этому пункту меню ещё до того как этот элемент появится.

Попробуйте вместо простого поиска элемента сделать ожидание кликабельности этого элемента, а уже потом - клик.




#174014 Python + Selenium + Press Keyboard(Enter)

Отправлено автор: TatyanaV 15 октября 2019 - 08:22 в Автоматизированное тестирование

Может что-то вроде driver.switch_to.alert.accept() ?




#172024 Как получить значения из подстроки таблицы

Отправлено автор: TatyanaV 30 апреля 2019 - 12:06 в Selenium - Functional Testing

Элементов может быть разное количество - может 1, а может и 10. 

.//*[@id='ProductTable']/.//tr[3]/.//input
.//*[@id='ProductTable']/.//tr[3]/td[2]  ///возвращает 803,52

При изменении кол-ва строк - такие локаторы сломаются.

 

Я бы поискала элемент с номером клиента (его не видно на скрине) и уже от него бы искала дальше.

"ProductTable" насколько я понимаю - вся таблица для всех клиентов сразу?




#170901 Добавить в цикл переменну и это значение в sendkeys

Отправлено автор: TatyanaV 14 февраля 2019 - 09:59 в Selenium - Functional Testing

На текстовое значение длиной -1 я бы посмотрела. :)
 
for (int storedVal = 0; storedVal < 9; storedVal++)
System.out.println(storedVal);
 
Это означает: начиная со значения storedVal  = 0 и пока storedVal < 9 - выполнять System.out.println(storedVal), после каждого прохода увеличивать значение переменной (storedVal++).

При этом storedVal - локальная переменная этого цикла, вне for'а её не существует, поэтому sendKeys знать не знает, что это и откуда это взять.

 

Соответственно, из первого поста:

 

for (int storedVal = 0; storedVal < 3; storedVal++)
String storedVal = RandomStringUtils.random(10, 0, 9, false, true, "1234578752".toCharArray());
System.out.println(storedVal);

 

Почти тоже самое, только ещё кривее. Вы говорите, что у Вас есть переменная storedVal типа int, по которой идёт цикл (см.выше), но в самом цикле говорите, что нужна еще одна переменная с тем же названием storedVal, но типом String (это в принципе неправильно). Если измените название переменной - тоже получится ерунда. Просто x раз (в  данном случае - 3 раза) будет заново генерироваться рандомная строка. Зачем? Чем Вас не устраивает то, что сгенерировалось в первый раз?

 

Если хотите как-то использовать переменную вне цикла (в sendKeys, например), то её надо объявить ДО цикла, в цикле (в теле цикла) её изменить, после цикла - использовать. При этом для самого цикла будет другая переменная.

Например:

String storedVal = "";

for (int i= 0; i < 3; i++) {
       <тут как-то меняете значние storedVal>

}
System.out.println(storedVal);

 

Зачем Вам тут в принципе циклы, если Вы сразу всю строку радомную генерите - не понимаю.

 

п.с.: локаторы - тихий ужас.

п.п.с: значение второго куска кода во втором сообщении - вообще вне моего понимания, смотрится как просто бессмысленный набор команд, без какой либо логики и взаимосвязи. 

п.п.п.с: я бы на Вашем месте не стала мешать всё в одну кучу - сначала надо изучить хотя бы основы Java, а уже потом добавлять Selenium. Потому что в том, что Вы привели - селениума нет по сути, все проблемы именно из-за незнания ЯП.




#172789 Не взаимодействует со вторым элементом из списка с одинаковыми class

Отправлено автор: TatyanaV 01 июля 2019 - 07:54 в Selenium - Functional Testing

Попробуйте между "cursorOnDestroyButton.moveToElement(destroyList.get(1))" и ".click();" добавить ожидание кликабельности.

Т.е. "переместить курсор", подождать пока кнопка станет кликабельной, кликнуть.




#171865 xpath. Переход по дочерней ссылке

Отправлено автор: TatyanaV 18 апреля 2019 - 09:21 в Selenium - Functional Testing

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

 

В начале Вы одним способом скобки указали, ниже в "равенстве" уже другим.

Фраза "в тегах "a" ищутся атрибуты data-analytics-placement" - неправильная сама по себе, т.к. локатор предполагает не поиск аттрибутов в тэгах, а поиск элементов (тэгов) с указанными значениями аттрибутов. Это не одно и тоже.

При этом, так и не понятно, в чем проблема - смотрите, как считается, и указываете соответствующий номер, хоть с 0 там отсчет, хоть с 1, хоть со скольки угодно.

В результате, лично у меня после первого сообщения получилась какая-то непонятная каша в голове. 

 

Ваше "//a[@data-analytics-placement][3]  =  xpath=(//a[@data-analytics-placement][3])" - ещё больше сбило с толку, т.к. стало не ясно, что же не так то тогда, "равенство" на первый взгляд выглядит адекватным.

 

Про "прямо подряд" - добавило к непонятности. Бывает "непрямо подряд"? 

Не понятно, что значит "4 по порядку атрибут с тегом". Это так не работает. У аттрибутов нет тэгов.

 

 

 

Я нашла ответ на свой вопрос, спасибо за АКТИВНОЕ участие в обсуждении.

 

Пожалуйста.




#172551 Не передаётся значение перменной

Отправлено автор: TatyanaV 10 июня 2019 - 11:30 в Selenium - Functional Testing

Какая переменная, какой ЯП, куда не передаётся, что вообще вы пытаетесь сделать...

У нас тут напряг с телепатами - лето, отпуска... 




#172858 Прошу помочь разобраться с ошибкой cucumber.runtime.CucumberException:

Отправлено автор: TatyanaV 08 июля 2019 - 13:52 в Автоматизированное тестирование

А Вы уверены, что у COOKIE Вас правильно инициализированно?

Вроде бы первый параметр - имя (например, "ANID"), потом значение (например, "AHWqTUlyIThXzCDuQ8RXntFTNhBAXHx-jeqdHC12Naifw_ipukQpb2HnCyDmygAL").

У Вас куки в системе так и называются "cookie"?  :search:




#171633 Команда "wait for element present" (Selenium IDE) - нужно ли у

Отправлено автор: TatyanaV 09 апреля 2019 - 06:06 в Selenium - Functional Testing

Теоретически, "element present" ждёт появления элементов в DOM'е, а не у Вас на экране. Возможно, блок для результатов в DOM'е присутствует изначально, а после поиска - выводится.

На это намекает "display: none;" в searchResultContainerEmpty - возможно у mCSB_container до поиска тоже стояло "display: none;". Но т.к. сам элемент есть, "wait for element present" его успешно находит.

 

Если Вы хотите проверять, что элемент не просто есть, но и выведен на экран - есть два варианта:

1. Ждать не "wait for element present", а "wait for element clickable" (не помню уже, как это правильно в Selenium IDE пишется).

2. Если я права и он просто скрыт через style*='display: none;', можно попробовать искать через немного другой локатор. Т.е. ждать не "#searchResult > div.mCSB_container", а "#searchResult > div.mCSB_container:not([style*='display: none;'])" или "#searchResult:not([style*='display: none;']) > div.mCSB_container", в зависимости от того, на какой элемент вешается style*='display: none;' до поиска. Попробуйте посмотреть эту часть кода страницы до "поиска".




#170741 Выбор языка для автоматизации тестов

Отправлено автор: TatyanaV 01 февраля 2019 - 06:38 в Selenium - Functional Testing

Насколько критичный вопрос выбора языка для автоматизации тестов?
Есть ли какие-то советы, в какой ситуации стоит выбрать именно этот, а не другой язык? Может быть, в определенных областях требуются конкретные языки?

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

 

Тяжело ли перейти к другому языку, если научишься на одном?

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

Есть ли разница, на каком языке писать тесты, ведь язык тестов и самого приложения никак не взаимосвязаны?
почему в требованиях часто указывают конкретный язык, который хотят от автоматизатора?
 
Почему не распространен язык JavaScript для автоматизации? На мой взгляд, прекрасный выбор. Фреймворки для него почему-то есть, а отдельного течения (как и курса на портале) нет, с чем это связано?

В требованиях язык указывают потому что, как правило, ищут автоматизатора на уже существующий проект, уже существующие тесты, а не на что-то, что надо будет делать совсем с нуля.
Соответственно, ищут того, кто сможет развивать то, что у этой компании уже было сделано в плане автотестов.

И / или уже есть автоматизатор, хотят, чтобы была возможность взаимодействия / совместной работы / передачи опыта и т.п.




#171345 Не нажимается radio button

Отправлено автор: TatyanaV 18 марта 2019 - 10:24 в Автоматизированное тестирование

У Вас onclick не на инпуте, а на лейбле.

При этом, сама отметка на радиобаттоне тоже ставится этим же onclick'ом (<label for="ID_DELIVERY_ID_41" onclick="BX('ID_DELIVERY_ID_41').checked=true; submitForm();">).

 

Попробуйте кликать по '#ID_DELIVERY_ID_41+label' (cssLocator).

Либо по '//*[@id='ID_DELIVERY_ID_41']/../label]' (xpath).

Или '//*[@id='ID_DELIVERY_ID_41']/following-sibling::label]' (xpath)




#170477 Как переключиться во фрейм — switchTo().frame?

Отправлено автор: TatyanaV 17 января 2019 - 13:14 в Автоматизированное тестирование

wd.switchTo().defaultContent().switchTo.frame("fssarmiframe") - не помогает?

Насколько я понимаю, у Вас падает уже на следующем шаге, само переключение проходит.

 

С каким конкретно эксепшеном падает скрипт и как Вы определили, что локатор верный?

Учитывая, что у вас там цифры в айдишниках - то, что его Каталон в таком виде нашел ещё не гарантирует, что этот локатор 100% верный (цифры теоретически могут поменяться + Вы ссылаетесь на //div[3], а структура также могла поменяться и тогда Ваш элемент уже не div[3], а div[4], к примеру).

 

Есть ли у Вас контакт с разработчиками? При таком ужасе с атрибутами элементов (с точки зрения автоматизации, не разработки) - чаще всего лучше попытаться договориться с разработчиками о создании фиксированных айдишников на нужных Вам элементах.

 

У Вас есть на пунктах атрибут "data-recordid" - эти айдишники рандомные или соответствуют Вашей БД? 

К примеру, в кусочке кода дерева есть элемент с айдишником ext-element-88. Если data-recordid не рандомное, а фиксированное - его можно было бы найти как "[data-recordid=43] .x-treelist-item-wrap" (ну или "//*[@data-recordid=43]//*[@class='x-treelist-item-wrap']".

Локатор был бы привязан к чему-то более фиксированному и неизменяемому.

Повторюсь - это все только в том случае, если data-recordid - это неизменяемый айдишник (к примеру, записи в БД).

 

п.с.: а вообще, всегда остается вариант с дебаггом. Доходите до поставленного Вами брейкпоинта, нажимаете в браузере ф12 и пробуете найти элемент по указанному локатору - есть ли но на самом деле или нет.




#170446 Как переключиться во фрейм — switchTo().frame?

Отправлено автор: TatyanaV 17 января 2019 - 07:36 в Автоматизированное тестирование

У Вас на скрине - только элемент, который Вы хотите кликнуть, плюс скриншот тэга со скриптом, а как выглядит тэг самого фрейма?




#173056 Как схитрить, чтобы не ждать подолгу полный проход теста по странице

Отправлено автор: TatyanaV 24 июля 2019 - 13:36 в Selenium - Functional Testing

Я использую IntelliJ IDEA.

Когда мне нужно отладить какой-нибудь тест - просто запускаю его в дебаггере и дохожу до точки "перед тем участком, который надо отладить". Дальше уже не продолжаю выполнение кода дебаггером, а выполняю нужные мне "кусочки кода" в доп. тулзе Evaluate Expression. Если там что-то не так - тест в целом не падает, поэтому можно подкорректировать то, что нужно и попробовать снова.




#171822 Выбор даты из календаря средствами Selenium IDE

Отправлено автор: TatyanaV 16 апреля 2019 - 06:45 в Selenium - Functional Testing

А Вас слово "not" не смущает? :) 
 
[id*='day']:not([class='disabled']) = элемент, в айдишнике которого присутствует "day", и у которого НЕТ класса "disabled".

 

Соответственно, варианты, которые Вы пробовали:

css=#day:not([class*="disabled"]):not([class*="today"]) = элемент, айдишник которого = "day" (у Вас вроде бы не было таких элементов), и у которого НЕТ класса "disabled" и НЕТ класса "today".

css=[id*="day"]:not([class*="disabled"]):not([class*="today"]) = элемент, в айдишнике которого присутствует "day", и у которого НЕТ класса "disabled" и НЕТ класса "today".

 

#cal td.today = где-то ниже по DOM'у относительно элемента с id = "cal", найти элемент td, у которого ЕСТЬ класс "today".

 

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

 

Теоретически, [id*="day"]:not([class*="disabled"]):not([class*="today"])  должно было отработать и кликнуть по "вчера" (если по скрину с кодом смотреть). Возможно, пытается кликнуть до того, как календарь "откроется". 

verify element present смотрит лишь на наличие элемента в DOM'e. Видно его или нет, можно ли по нему кликнуть и т.д. - не проверяется.

Попробуйте дожидаться не наличия элемента (verify element present), а его кликабельности (element clickable - не знаю, как оно в IDE пишется).

 

п.с.: [id*="day"].today:not([class*="disabled"]) = элемент, айдишник которого содержит "day", и у которого ЕСТЬ класс "today" и НЕТ класса "disabled".




#171744 Выбор даты из календаря средствами Selenium IDE

Отправлено автор: TatyanaV 11 апреля 2019 - 13:10 в Selenium - Functional Testing

css: [id*='day']:not([class='disabled'])

 

п.с.: *= - означает "содержит".




#171574 ImplicitWait не ждет больше 60 сек

Отправлено автор: TatyanaV 05 апреля 2019 - 10:10 в Selenium - Functional Testing

Одновременное использование явных и неявных ожиданий в принципе не рекомендуется.




#171462 Как проверить элемент по его атрибуту в selenium ide

Отправлено автор: TatyanaV 29 марта 2019 - 07:37 в Selenium - Functional Testing

Это не "поиск необходимого текста", т.к. у этого элемента нет текста. Вы не то гуглите.

У элемента есть атрибут с определенным значением (см. то, что Вам написали выше).

Соответственно и копать Вам надо не в сторону "поиска текста", а в сторону "поиска элемента по значению атрибута".

 

Как вариант - искать элемент по "#DeparturePath" (т.е. без привязки сразу к атрибуту + у самого элемента есть айдишник свой, его не зачем от вышестоящего как-то искать).

А потом уже следующим шагом получать значение атрибута placeholder и проверять его




#171579 ImplicitWait не ждет больше 60 сек

Отправлено автор: TatyanaV 05 апреля 2019 - 12:32 в Selenium - Functional Testing

Одновременное использование явных и неявных ожиданий в принципе не рекомендуется.

наоборот, рекомендуется в случае разных "сложных" элементов, когда элементы кастомные или с фреймворков типа реакта, или когда лэйзи лоадинг применяется

 

https://www.selenium...er_advanced.jsp

WARNING: Do not mix implicit and explicit waits. Doing so can cause unpredictable wait times. For example setting an implicit wait of 10 seconds and an explicit wait of 15 seconds, could cause a timeout to occur after 20 seconds.




#170647 Бизнес/технические вопросы по Автоматизированному тестированию

Отправлено автор: TatyanaV 28 января 2019 - 06:29 в Автоматизированное тестирование

Автоматизация - это та же разработка.

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




#169941 тест выполнился,но в консоле тест файлед

Отправлено автор: TatyanaV 07 декабря 2018 - 10:24 в Автоматизированное тестирование

с помощью math.random() подставляю данные до максимальной длины символов

 

Вот это - просто гениально! 

 

Простите, не удержалась.




#171461 Как проверить текущую дату в SELENIUM IDE

Отправлено автор: TatyanaV 29 марта 2019 - 07:33 в Selenium - Functional Testing

Давно не смотрела Selenium IDE, не уверена, можно ли там сейчас как-то завязываться на "текущую дату" и уже от неё плясать.