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

Публикации contestar

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



#75366 Selenium RC не видит окно

Отправлено автор: contestar 22 апреля 2010 - 14:14 в Selenium - Functional Testing

Привет, попробуй так:

selenium.click("symbolLookupLink");				   //вызываем твоё окно
		selenium.selectWindow("mywindow");				   //переключаем фокус на открытое окно
		selenium.type(LookupPopupFieldName, "DIA");			   //заполняем форму
		selenium.close();							  //закрываем окно
		selenium.selectWindow(null);										//возвращаем фокус на главное окно


Надо указать селениуму в каком окне производить действия. Для этого используется selectWindow(windowID). Падение по timeout скорее всего происходит из-за того, что сервер ждёт появления чего-то, а это чего-то не появляется (могу ошибаться).



#76294 Требуется QA инженер

Отправлено автор: contestar 12 июня 2010 - 15:11 в Работа/Санкт-Петербург

вы как-нибудь связаны с Developonbox (Zodiac Inc.)?



#76782 Вывод в файл AssertionError

Отправлено автор: contestar 06 июля 2010 - 13:36 в Selenium - Functional Testing

Всем привет.
Использую seleniumRC(1.0.3) + Java + JUnit + IDEA.
Прикрутил для логирования log4j. Возник вопрос, при использовании verifyTrue/False в лог вывожу printStackTrace. Но в нём содержится достаточно много бесполезной информации. Есть возможность каким-либо распарсить это сообщение и выводить в лог только нужную строку. Приведу пример.

Example.class
public class Example extends TestsBase {
static Logger log = Logger.getLogger(Example.class);
public void testExample() throws Exception {
log.info("Test is running…");
try {
		verifyTrue(selenium.isElementPresent(buttonSaveTask));
		verifyTrue(selenium.isElementPresent(buttonReset));
		checkForVerificationErrors();
	 }
		catch (Throwable ex) {
				log.error(ex);
				ex.printStackTrace();
				throw new Exception(ex);		   
}

В случае отсутствия buttonSaveTask или buttonReset в логе имеем следующее:
INFO : Test is running…
ERROR: java.lang.AssertionError: java.lang.AssertionError: null
	at com.thoughtworks.selenium.SeleneseTestBase.fail(SeleneseTestBase.java:356)
	at com.thoughtworks.selenium.SeleneseTestBase.assertTrue(SeleneseTestBase.java:361)
	at com.thoughtworks.selenium.SeleneseTestBase.assertTrue(SeleneseTestBase.java:365)
	at com.thoughtworks.selenium.SeleneseTestBase.verifyTrue(SeleneseTestBase.java:125)
	at com.thoughtworks.selenium.SeleneseTestCase.verifyTrue(SeleneseTestCase.java:119)
	at tests.tests.CreateTaskScreen.UI.Buttons.testExample(Example.java:34)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at com.thoughtworks.selenium.SeleneseTestCase.runBare(SeleneseTestCase.java:212)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:124)
	at junit.framework.TestSuite.runTest(TestSuite.java:232)
	at junit.framework.TestSuite.run(TestSuite.java:227)
	at com.intellij.junit3.TestRunnerUtil$SuiteMethodWrapper.run(TestRunnerUtil.java:259)
	at junit.textui.TestRunner.doRun(TestRunner.java:116)
	at com.intellij.junit3.JUnit3IdeaTestRunner.doRun(JUnit3IdeaTestRunner.java:108)
	at junit.textui.TestRunner.doRun(TestRunner.java:109)
	at com.intellij.junit3.JUnit3IdeaTestRunner.startRunnerWithArgs(JUnit3IdeaTestRunner.java:42)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:192)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:64)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)

Я хочу получить в логе только это:
INFO : Test is running…
ERROR:at tests.tests.CreateTaskScreen.UI.Buttons.testExample(Example.java:34)

Это возможно?

Может вообще применить иной подход к логированию? Например, чтобы лог был таким:
INFO : Test is running…
ERROR: Button Save Task doesn't exist

В таком случае как добиться такого вывода.

Спасибо.



#76794 Вывод в файл AssertionError

Отправлено автор: contestar 07 июля 2010 - 07:14 в Selenium - Functional Testing

А в чем проблема?
так и пишите log.error(yourMessage)
или так log.error(yourMessage, ex)


Дело в том, что в одном тесте идёт проверка большого числа элементов. Например, все лейблы на странице (~50 штук), другой тест - проверка такого же количества полей. Поэтому было бы проще выводить log.error только для тех элементов, которые действительно failed.

Как уже привёл в первом посте идёт проверка наличия кнопок их может быть огромное количество:

1. verifyTrue(selenium.isElementPresent(button1))
2. verifyTrue(selenium.isElementPresent(button2))
.
.
50. verifyTrue(selenium.isElementPresent(button50))

Допустим, verify - failed для 10 кнопок, тогда лог получим довольно внушительным. Мне хотелось бы вывести в лог только строки для этих 10-ти кнопок.

tests.tests.CreateTaskScreen.UI.Buttons.testButtons(Buttons.java:41)
tests.tests.CreateTaskScreen.UI.Buttons.testButtons(Buttons.java:52)
tests.tests.CreateTaskScreen.UI.Buttons.testButtons(Buttons.java:59)
...

Или так:
Save button doesn't exist
Edit button doesn't exist
Exit button doesn't exist
...

Не буду же я делать checkForVerificationErrors() после каждого verify-метода )



#76806 Вывод в файл AssertionError

Отправлено автор: contestar 07 июля 2010 - 08:23 в Selenium - Functional Testing

		log.info("Проверяем лейбл 'Сумма:'");
		NoncriticalAssert(selenium.getText("xpath=//tr[7]/td[@class='label' and position()=1]/span[@class='lblrequired']/label").equals("Сумма:"),
		"Отсутствует лейбл 'Сумма:'. Получен текст: " + selenium.getText("xpath=//tr[7]/td[@class='label' and position()=1]/span[@class='lblrequired']/label"));


По-моему, такой подход утяжеляет код.



#76833 Автоматизация тестирования с помощью Fitnesse

Отправлено автор: contestar 07 июля 2010 - 21:10 в Автоматизированное тестирование

По какой причине вывод пал на этот инструмент? Я бы посоветовал Selenium RC.



#76851 Selenium RC+Java vs. JavaScript

Отправлено автор: contestar 08 июля 2010 - 20:50 в Selenium - Functional Testing

может не правильно вас понял, но для своих выпадающих списков использую:
selenium.mouseDownAt(locator, "")	//Раскрываем список
selenium.click(yourRequiredElement) //Кликаем на необходимый элемент в списке



#77472 Работа с диалоговыми окнами в Selenium

Отправлено автор: contestar 11 августа 2010 - 18:47 в Selenium - Functional Testing

selenium.chooseOkOnNextConfirmation()
selenium.click("yourButton")

попробуйте это, если я правильно вас понял.



#77491 Работа с диалоговыми окнами в Selenium

Отправлено автор: contestar 13 августа 2010 - 17:09 в Selenium - Functional Testing

Судя по использованию RenderedWebElement, товарищ, который задавал вопрос, работает с Selenium 2.0 (а может быть даже с чистым WebDriver), поэтому ему Ваш способ скорее всего не подойдёт, увы.


возможно вы правы, я еще ни разу не использовал selenium 2.0



#77830 Selenium: работа с message box

Отправлено автор: contestar 07 сентября 2010 - 10:39 в Selenium - Functional Testing

У вас на скриншоте id кнопки = button2_2, вы кликаете на id=button1_2. ID точно не динамический?



#77842 Selenium: работа с message box

Отправлено автор: contestar 07 сентября 2010 - 21:29 в Selenium - Functional Testing

К id-шнику не обязательно привязываться (я это вообще не люблю и не применяю). Например, так:
1. click("//div[@class='box_controls']/div[@class='button_yes']/div");
2. click("//div[text()='Удалить']");
3. click("//div[@class='box_controls']/div[2]");

Список можно продолжить.
Вместо xpath есть вариант определить элемент используя css (говорят на IE быстрее).



#77854 Selenium: работа с message box

Отправлено автор: contestar 08 сентября 2010 - 09:17 в Selenium - Functional Testing

Как показывает практика, CSS быстрее только для простых случаев, а вот когда идут уже переходы по иерархии, то разница в скорости уже не заметна: тормозит одинаково

Меня спасает
selenium.useXpathLibrary("javascript-xpath");
Заметно быстрее работает.



#77904 Selenium: работа с message box

Отправлено автор: contestar 10 сентября 2010 - 07:31 в Selenium - Functional Testing

Но на кнопку не нажимает. ну или нажимает но ничего не происходит
Самое интересное то что пути прописываются верно по крайне мере getText() возвращает то что написано на кнопке.

Встречался однажды с такой проблемой при тестировании приложений на Tibco GI. Объект видит, но не кликает на него. Пришлось выкручиваться - роботом по координатам. Конечно же так нельзя делать..но это был единственный вариант. Потом попробовал selenium 2 - он отлично справился с этим объектом.



#77968 Вывод в файл AssertionError

Отправлено автор: contestar 14 сентября 2010 - 11:22 в Selenium - Functional Testing

Получилось ли сделать это? Как добились? Спасибо заранее

Последовал примеру Boltick. Вывожу в лог теперь то, что нужно. Спасибо.



#78080 ClickAt()

Отправлено автор: contestar 18 сентября 2010 - 21:37 в Selenium - Functional Testing

"10,20" - координаты от левого верхнего угла видимой части окна браузера (страницы).
Иногда случается так, что нажать на какой-либо элемент, используя click(), невозможно. В таком случае помогает clickAt(locator, "") или mouseDownAt(locator, ""), без указания координат.



#78081 Тестирование drop-down lists при помощи Selenium

Отправлено автор: contestar 18 сентября 2010 - 21:47 в Selenium - Functional Testing

Допустим, все записи в дропдаун листе имеет такой вид:
//div/span[@label='item1']
//div/span[@label='item2']
Отличаются только лейблами.

можно выбрать элемент так:
selenium.click("//div/span[1]");  //Будет выбран 1-й элемент в списке
selenium.click("//div/span[2]");  //Будет выбран 2-й элемент в списке



#78085 Тестирование drop-down lists при помощи Selenium

Отправлено автор: contestar 20 сентября 2010 - 07:14 в Selenium - Functional Testing

Предполагаю, что вам подойдет это:
selenium.click(dropdown); //раскрываем dropdown(локатор укажите свой)
int countItems = (selenium.getXpathCount("//select[@name='ddObjectType']/option")).intValue(); //таким образом выясним количество элементов
for (int i=1; i <= countItems; i++) { //пройдемся по каждому, начиная с первого и исключая 0
selenium.click("//select[@name='ddObjectType']/option[" + i + "]");
selenium.click(dropdown); //повторное раскрытие dropdown списка после каждого клика
Вроде так. Попробуйте, возможно потребуется немного изменить локаторы



#78126 ClickAt()

Отправлено автор: contestar 20 сентября 2010 - 17:49 в Selenium - Functional Testing

По документации координаты все же отсчитываются относительно элемента, найденного по указанному локатору:

Видимо перепутал. Если использовать Robot - то он считает координаты от верхнего угла.



#78170 На что можно раccчитывать

Отправлено автор: contestar 22 сентября 2010 - 07:02 в Ищу работу!

Здесь опубликована статья о вилке зарплат. Достаточно точно. Посмотрите.



#78194 На что можно раccчитывать

Отправлено автор: contestar 22 сентября 2010 - 19:01 в Ищу работу!

А я сильно сомневаюсь, что точно

Ок, давайте обсудим. Я могу делать выводы только по Петербургу. Согласен со всеми цифрами, за исключением максимального оклада. Он зависит от объёма выполняемых задач + опыт + навыки и толстого кошелька работодателя. Может быть равен и 100.000 руб.



#79074 Запуск тестов Selenium 2.0 на другом хосте

Отправлено автор: contestar 21 октября 2010 - 14:21 в Selenium - Functional Testing

Привет,
Сейчас пробую selenium 2.0 (Webdriver) для тестирования web-приложений. До этого использовал seleniumRC + java +junit. Тесты запускал на виртульной машине путём указания её ip в setUp(). Каким образом запустить тесты не на localhost, а допустим на виртуалке с ip 192.168.1.51?



#79124 PHPUnit + Selenium RC + NetBeans

Отправлено автор: contestar 22 октября 2010 - 11:13 в Selenium - Functional Testing

String attValue = selenium.getAttribute(locator + "@value");

log.info("Value is: '" + attValue + "'");

assertEquals("", attValue);



#80910 Итерационное тестирование

Отправлено автор: contestar 30 ноября 2010 - 08:44 в Тест-дизайн и ручное тестирование

Как мне кажется, в данной ситуации необходимо всё взять в свои руки. Я имею ввиду собраться на стендап и обговорить проблемы, расставить приоритеты в связке PM-dev-test. Разделить функционал на несколько частей и начать заниматься одной из них. Доработать одну часть - протестировать, взяться за вторую и т.д. А bug-fixing всего и сразу не даст результата. Здесь важно расставить приоритеты. Соглашусь с предыдущим комментарием. От вас в первую очередь требуется smoke testing - набор кейсов, при падении хотя бы одного из них продукт не может быть отдан в тестирование. Эти кейсы желательно автоматизировать и дать возможность прогонять их на новом билде самими девелоперами до передачи билда. Этот момент нужно обговорить как с dev командой, так и со своим менеджером, чтобы каждый знал свою роль и ответственность в проекте. Успехов.



#82462 Нужна помощь в нажатие на кнопку

Отправлено автор: contestar 23 декабря 2010 - 13:57 в Selenium - Functional Testing

$this->selenium->click("link=Создать");
sleep(5);
$this->chooseOkOnNextConfirmation();
ну и далие тест.
Попробуй так....отпишеш..

chooseOkOnNextConfirmation() должен быть перед кликом. А после него - getConfirmation().
chooseOkOnNextConfirmation();
click("link=Создать");
getConfirmation();



#83428 никак не могу кликнуть на td

Отправлено автор: contestar 24 января 2011 - 09:11 в Selenium - Functional Testing

Не совсем уверен, что мой комментарий относится к вашей ситуации, но - у меня была проблема с нажатием на кнопку, которая находилась в таблице. Selenium RC никак не мог её найти - были испробованы всевозможные локаторы и методы. Из англоязычных форумов вычитал о том, что selenium действительно может иметь проблемы с таблицами. Удалось решить проблему только через java.Robot (попробуйте). И второе решение проблемы - использование selenium webdriver.
Успехов.