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

Petrov.Sergey

Регистрация: 11 июл 2013
Offline Активность: 04 фев 2021 20:52
-----

#121368 WebDriver + SmartGWT

Написано Petrov.Sergey 29 августа 2013 - 14:00

Всем доброго дня!
Возникла необходимость написания авто-тестов на веб-приложение, основанное на SmartGWT. Понял, что эта система не очень дружит с Selenium WebDriver. Однако разработчики SmartGWT утверждают, что имеется набор классов для этого, упакованный в isomorphic_webriver.jar. Однако, этот файл в поставке SmartGWT найти мне не удалось, сколько бы я не искал. Информация содержится на этой странице.
Кто подскажет? Где же всё-таки взять данные классы (самое главное - ByScLocator)? И если нет возможности его найти, то какой возможен альтернативный вариант?

Пробовали смотреть тут?

The isomorphic_webdriver.jar is now included in the latest daily build of 9.0 evaluation

Речь идёт о версиях Smartclient.
Качаете клиент и достаёте оттуда нужный ДЖАРник.
  • 1


#120746 Swipe function Java

Написано Petrov.Sergey 08 августа 2013 - 11:13

Ребятки, помогите, кто знает как.
Пытаюсь освоить Selenium WebDriver, использую Java.
Так вышло, что в тесте мне нужно использовать swipe , но селениум не понимает ее. Как мне на java реализовать такую фичу, чтобы я зажал мышкой на определенном участке и просвайпил влево или вправо, вследствии чего у меня появляется pop-up button. Спасибо
P.S. в программировании не шарю вообще ничего, поэтому объясните как можно подробней (для чайников) :clapping:/>/>

Повторяй мантру перед сном: "I will always ask google before asking questions"
Вторая + третья ссылки
  • 1


#120644 Переключение к основному окну после закрытия нового

Написано Petrov.Sergey 06 августа 2013 - 11:11

Всем привет.
Использую Wberiver+eclipse
В тесте происходит нажатие кнопки, по которому открывается новое окно, переключаюсь на это окно, делаю необходимые операции, далее жму кнопку "Выход" и окно закрывается.
Вот собственно вопрос, как переключиться обратно на основное окно?
Для переключения на новое использую следующую конструкцию:

Set<String> oldWindowsSet = driver.getWindowHandles(); // получаем набор дескрипторов текущих открытых окон
ExitButton.click();
Set<String> newWindowsSet = driver.getWindowHandles(); // получаем новый набор дескрипторов
newWindowsSet.removeAll(oldWindowsSet);
String newWindowHandle = newWindowsSet.iterator().next(); // получаем дескриптор нового окна
driver.switchTo().window(newWindowHandle); // переключаемся на новое окно

Подобным образом переключить на основное не получается, т.к. driver.getWindowHandles() возвращает только одно окно и соответственно newWindowsSet.iterator().next() возвращает NoSuchWindowException.
Мне кажется есть какой то простой способ переключить фокус на единственное окно.
Если ничего не делать то также ошибка Unable to find element on closed window


Очевидно!
Допустим, oldWindowsSet = {"1","2"} // утрированно
После закрытия одного окна oldWindowsSet остаётся прежним (Вы же не меняли набор!).
После этого берёте текущий набор идентификаторов newWindowsSet, который уже равен {"1"}
И из этого набора Вы удаляете все те, которые были, получая NULL-овый линк на первый элемент.
По пустому списку итерировать нельзя. Об этом вам среда и говорит.

Удалите строчку
newWindowsSet.removeAll(oldWindowsSet);
и будет Вам счастье.

Да и вообще, зачем вам хранить и OLD, и NEW, если достаточно хранить только CURRENT ?

Попробуйте сохранить ид основного окна перед открытием нового: String oldWindow = getWindowHandle();
и потом переключиться на него через driver.switchTo().window(oldWindow);

Самый правильный вариант.
  • 1


#120512 Оцените, пожалуйста, резюме.

Написано Petrov.Sergey 02 августа 2013 - 06:34

Недавно закончил курсы по тестированию, сейчас нахожусь в активном поиске работы. Ну а первый шаг в поиске работы, как известно - составление резюме, что я и сделал:)
Теперь нуждаюсь в Вашей помощи, уважаемые форумчане. Пожалуйста, оцените резюме и укажите, что нужно исправить/удалить/добавить.
С уважением, Андрей.

Резюме обычно читают сначала сотрудники HR, а уже потом только потенциальный руководитель.
Так как HR ищет по совпадению ключевых слов, то рекомендую без прикрас указать в резюме ключевые слова и аббревиатуры.

В Вашем резюме я не увидел слова XML, хотя присутствует опыт работы с вебсервисами. Вы с ними работали только через UI? Если это слово Вас не пугает, то лучше его указать. По собственному опыту говорю: работодатели, находящиеся в поиске автотестера или хотя бы "технического" тестера, всегда спрашивают о знании XML, даже если его знание подразумевается в другой технологии. Трижды подряд на собеседованиях меня спрашивали - после этого решил добавить его в резюме.

Укажите как можно больше "аббревиатур" (даже очевидных).
С одной стороны, это психологическая "атака" на бедную девочку-HR.
С другой стороны, уменьшит количество элементарных, с Вашей точки зрения, вопросов, типа: "Вы умеете работать с MS Office?" (разумеется, Вам именно этот вопрос не зададут - просто привёл пример сложности и очевидности).
В третьих, даст почву для беседы с потенциальным руководителем: чтобы он на собеседовании не искал, что Вы знаете, а проверял только глубину знаний той или иной технологии/языка и т.п. Именно поэтому лучше не приукрашивать - на собеседовании ложь всё равно себя проявит. Было у меня несколько случаев, когда человек писал "знаю то, знаю сё", а копнёшь поглубже - кроме названия и поверхностного понимания, ничего нет.
В четвёртых, чем больше написано в резюме, тем больше шанс заинтересовать потенциального руководителя (HR уже прошли, т.к. триггеры по ключевым словам сработали). Согласитесь, у человека с бОльшим количеством информации в резюме больше шансов заинтересовать работодателя.
  • 1


#120297 Оцените резюме

Написано Petrov.Sergey 25 июля 2013 - 18:27

Вообще с таким резюме шансы есть попасть на работу?

Шанс есть всегда.
0,001% - это тоже шанс.

В навыках по резюме стоит всегда указывать только то, что касается интересуемой должности, что может и должно заинтересовать работодателя.
В смысле, например, не стоит указывать UML 2.0, если резюме на позицию тестировщика. Нагромождение умных слов не всегда идёт на пользу.

Кстати, если Вам не чуждо слово XML, то лучше укажите его в "скиллах".
Причина:
Я не знаю, какой рынок тестеров у Вас на Родине - я столкнулся с этим в Москве: подавляющее большинство HR-девочек смотрят на наличие ключевых слов, которые им даёт начальство. И очень многие кадровички на собеседованиях спрашивали, знаю ли я XML (это слово отсутствовало в резюме, т.к. считал лишним из-за наличия опыта автоматизации тестирования вебсервисов - тут без знания XML никуда). После третьего подряд такого вопроса я понял: нужно указать это слово. Вы знаете, помогло!

Вспомните ещё несколько таких же простеньких словечек, очевидных для Вас, но совсем неочевидных для девушек по ту сторону телефонной трубки, и укажите их в резюме.
  • 1


#120277 Оцените резюме

Написано Petrov.Sergey 25 июля 2013 - 10:38

Здравствуйте, просьба просмотреть и оценить резюме. Спасибо

Processing of large data arrays. = BigData DB ?
Formation of databases => m.b. Creation?

Maintenance of computer network => It would be better if you specify the approximate number of computers

And i think it would be very useful for the employers, if you tell the reason why you want to change career on tester.
  • 1


#120186 Selenium 2.30/31: падение после закрытия алерта

Написано Petrov.Sergey 23 июля 2013 - 09:53

а не подскажите как постоить условие, которое проверяет текст в сообщении, и в соответствии с ним нажимает кнопку?


if (driver.getPageSource().contains("Текст 1"))
{try { assertTrue(closeAlertAndGetItsText().matches("Текст 1"));
}catch (NoAlertPresentException e){}
TimeUnit.SECONDS.sleep(3);
}
else { if (driver.getPageSource().contains("Текст 2"))
{try { assertTrue(closeAlertAndGetItsText().matches("Текст 2"));
}catch (NoAlertPresentException e){}
TimeUnit.SECONDS.sleep(3);
}
}
этот метод не работает, какую функцию можно использовать, чтоб проверить текст в сообщении?

Какое обилие фигурных скобок! Да ещё без форматирования! :nea:/> :acute:/>
А если попробовать вот так:
Alert alert = driver.switchTo().alert();
try {
	if (alert.getText().toLowerCase().contains("")) {
		//что надо сделать?
		alert.close();
	} else {
		//что надо сделать?
		alert.close();
	}
} catch (NoAlertPresentException e){
	TimeUnit.SECONDS.sleep(3); // а чего так много?
}

  • 1


#120066 Кроссбраузерное тестирование

Написано Petrov.Sergey 19 июля 2013 - 11:39

Оказывается гениальное просто? Я начал читать в инете инфу об етом, и все так говорят, что надо просто теже кейсы проганять в разных браузерах, не поверил что ето все, по етому решил спросить на форуме еще)
А каким образом оформляются баг репорты для кроссбраузерного тестирования?

Аналогичным образом, как и в одном браузере, только с указанием браузера, в котором тест не прошёл.
  • 1


#120061 Кроссбраузерное тестирование

Написано Petrov.Sergey 19 июля 2013 - 09:57

Здравствуйте, уважаемые коллеги!
В тестировании я не давно, столкнулся по работе с кроссбраузерным тестированием. Пытался в инете что то найти по етой теме, никаких конкретных примеров, литературы и так далее. Помогите пожалуйста разобраться в етой теме. С чего начать?
Заранее спасибо!

Хммм... А что тут сложного?
Кроссбраузерность означает лишь одно: один и тот же тест должен успешно проходить на всех заявленных браузерах.
А как тестировать в одном браузере, Вы должны уже знать.
  • 1


#119671 Как протестить страницу регистрации?

Написано Petrov.Sergey 12 июля 2013 - 04:24

Вас попросили фактически написать тест-план по тестированию страницы регистрации.
"Позитивные" или "негативные" тесты - это кто как называет. Мне больше нравится называть их тестами "mainline" и "вызов ошибки". Так что насчёт терминологии можете не париться совершенно! Важно не знать красивые слова, а понимать суть процесса.

А мне легче просто поразделять на Username, Email, Password и т.п. Но это же не правильно?

Почему неправильно?
Негативный кейс с вызовом ошибки на поле Username.
Негативный кейс с вызовом ошибки на поле Email.
Всё так, как Вас просят!
  • 1


#119641 Вопрос, как работать с базой данных при реализации авто-тестов?

Написано Petrov.Sergey 11 июля 2013 - 11:52

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

Есть несколько вариантов:
1) в каждом тесте БД восстанавливается из дампа. Это быстро, но неэффективно, т.к. если архитектура БД меняется, то дамп восстановит предыдущую архитектуру - можно получить по шапке от того, кто менял архитектуру БД.
2) иметь какой-то пул тестовых данных, который заливать на чистую БД в начале каждого теста.
3) каждый тест генерит для себя свой собственный пул данных.

Я пользуюсь третьим способом, так как в этом случае я не очищаю БД. Следовательно, могу запускать свои тесты даже на чужой БД.
Во-вторых, я не завишу от текущего состояния базы, а это очень ценно!
Производительность при этом, кстати, падает процентов на 10-20. То есть чуть-чуть.
  • 1


#119635 Нужно обратиться к элементу с с oncklick

Написано Petrov.Sergey 11 июля 2013 - 11:05



Печаль, не может найти элемент. Что вообще лучше почитать, чтобы понять, как пути правильно прописывать?

Попробуйте второй из предложенных и с точкой перед //

Вот хорошее видео по локаторам

неа, тоже не получается.
Вышло только поиском by ccsSelector "span.eventMasterDataEditDelete > img". Не знаю, еще,как это работает) но оно работает:)


cssSelector - классная штука!
Аналог XPath, но более мощный и гораздо более гибкий.
Например, в xpath нельзя использовать значение атрибута с пробелом /div[@class='a b'] выдаст ошибку "не могу найти", а вот By.cssSelector("div[class='a b']") найдёт нужный элемент!

Рекомендую почитать мануал по нему - пригодится!
  • 1


#119633 Нужно обратиться к элементу с с oncklick

Написано Petrov.Sergey 11 июля 2013 - 10:54

Здравствуйте, есть несколько вопросов.
1. Есть строка кода <span class="eventMasterDataEditDelete" onclick="saveRow(-1, 'type', 'listTypes', 1);">. Это кнопка, которая находится в таблице (сохранить новую запись). Нужно нажать ее, но воспользоваться айди класса "//span[@class='eventMasterDataEditDelete']" я не могу, потому что рядом есть кнопка с таким же классом. Можно ли как-то обратиться к onclick?

2. Я использую IEDriverServer,selenium-server-standalone-2.33.0, почему-то очень долго отрабатывают поля ввода, буквы вводятся очень медленно. Не подскажите, с чем это может быть связано? У ребят на другом компьютере те же тесты отрабатывают вполне нормально.

Спасибо!

У xpath есть классная фишка: //span[@class='eventMasterDataEditDelete'][1]
Если икспасу удовлетворяют несколько элементов, то можно взять любой из них, обратившись по индексу, начинающемуся с 1 (обратите внимание: именно с 1, а не с 0, как в большинстве С-подобных языках).

В данном случае икспасу удовлетворяют две кнопки, из которых нужна первая - дописываем [1] и радуемся :yes:
  • 1