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

Публикации contestar

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



#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?



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

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

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



#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 скорее всего происходит из-за того, что сервер ждёт появления чего-то, а это чего-то не появляется (могу ошибаться).



#85619 Проблема: Selenium не видит элементов после работы с апплетом

Отправлено автор: contestar 14 марта 2011 - 14:02 в Selenium - Functional Testing

selenium.selectWindow("windowID) - должно помочь.



#85653 Проблема: Selenium не видит элементов после работы с апплетом

Отправлено автор: contestar 15 марта 2011 - 08:31 в Selenium - Functional Testing

Приведите пример какого-либо элемента из этого окна. Во-первых, сам код элемента, а во-вторых - как вы к нему обращаетесь.
И как вы определили, что окно именно то?



#85693 Проблема: Selenium не видит элементов после работы с апплетом

Отправлено автор: contestar 16 марта 2011 - 08:24 в Selenium - Functional Testing

Вызывал через selenium.click("link = Min konto")
selenium.click("X-path элемента")
Получилось вызвать через selenium.click("//div[@id='navigation']/ul/li[1]/a/span"). Не знаю почему через X-path не прошло, по сути должно было сработать. В процессе поиска решения возник вопрос: возможно ли кликнуть в данном случае именно по имени, так как нужно проверять в то же время и название этого меню?

Неверно был задан локатор - вот в чём была ваша проблема. В ответ на ваш вопрос могу предложить следующее:
selenium.click(//div[@id='navigation']/ul/li[1]/a/span[text()='Min konto']) или же вообще сократить до selenium.click("//span[text()='Min konto']"), если подобного элемента больше нет на странице.



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

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

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



#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);



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

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

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

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



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

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

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



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

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

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

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



#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 быстрее).



#78080 ClickAt()

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

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



#78126 ClickAt()

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

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

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



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

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

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

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



#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-метода )



#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

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

Спасибо.



#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"));


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



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

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

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

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



#76851 Selenium RC+Java vs. JavaScript

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

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



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

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

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


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



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

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

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

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



#85486 WAPT - Нагрузочное тестирование сайтов и веб-приложений

Отправлено автор: contestar 10 марта 2011 - 12:56 в Портал Software-Testing.Ru

Понравился WAPT, но цена около $700. Для тех, у кого приоритет на performance testing - полезный инструмент.



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

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

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

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



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

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

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