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

Публикации phunq

20 публикаций создано phunq (учитываются публикации только с 30 марта 2023)


#94060 как сделать multy select

Отправлено автор: phunq 13 сентября 2011 - 10:45 в Selenium - Functional Testing

да похоже что самописный движок - единственно пока что могу показать это тот скриншот...



#93910 как сделать multy select

Отправлено автор: phunq 09 сентября 2011 - 11:49 в Selenium - Functional Testing

ну для второго код приводил Алексей

Select mySelect = new Select(driver.findElement(By.name("my-select")));
                mySelect.selectByValue("val1");
                mySelect.selectByValue("val2");

этот код навел меня на мысль на использование первой версии или по крайней мере вызовов команд первой из второй

selenium.addSelection("rules[0][verbs][]", "label=comment");
 Thread.sleep(1000);
 selenium.controlKeyDown();
 selenium.addSelection("rules[0][verbs][]", "label=deposit");
 Thread.sleep(1000);
 selenium.controlKeyUp();

но проблема в то что использовать класс Select можно только при наличии тега <select>
иначе экземпляр класса select просто не создать

в моем же случае нет тега select есть только

div[
table[
tr[td[span]]]
tr[td[span]]]
tr[td[span]]]
tr[td[span]]]
tr[td[span]]]
]

здесь нет ни аттрибута value, ни <select>, чтобы можно было выбирать по хотя бы индексу
селениум не видит здесь списка, поэтому я и пытался имитировать работу с ctrl+click shift+click

приложил картинку с кодом страницы

Прикрепленные изображения

  • 2011-09-09 15h47_42.png



#93870 как сделать multy select

Отправлено автор: phunq 08 сентября 2011 - 11:27 в Selenium - Functional Testing

ну Ваш код использет селениум первой версии, возможно все так

я использовал вторую версию
и там для фаерфокса явно не реализованы keyup, keydown

в принципе можно испольтзовать вызовы первой версии
а что означают здесь параметры метода addSelection ?



#93753 как сделать multy select

Отправлено автор: phunq 06 сентября 2011 - 08:55 в Selenium - Functional Testing

дополнительные исследование показали что код

                Actions builder = new Actions(wd);      
                   builder.keyDown(Keys.CONTROL)                   
               .click(we1)
               .click(we2)
               .keyUp(Keys.CONTROL);
                 Action selectMultiple = builder.build();
                 selectMultiple.perform();


в IE8 не скидывает эксепшена - но и к эффекту мультиселекта не приводит



#93733 как сделать multy select

Отправлено автор: phunq 06 сентября 2011 - 07:35 в Selenium - Functional Testing

как выясняется оно падает на такой операции

builder.keyDown(Keys.CONTROL).build().perform();

с такой ошибкой

Exception in thread "main" org.openqa.selenium.UnsupportedCommandException: Unrecognized command: POST /session/f1ddca54-3c28-4003-9304-f0739de604d7/modifier
Build info: version: '2.4.0', revision: '13337', time: '2011-08-12 09:58:05'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:407)
	at org.openqa.selenium.remote.RemoteWebDriver$RemoteKeyboard.pressKey(RemoteWebDriver.java:642)
	at org.openqa.selenium.interactions.KeyDownAction.perform(KeyDownAction.java:40)
	at org.openqa.selenium.interactions.CompositeAction.perform(CompositeAction.java:31)



#93620 как сделать multy select

Отправлено автор: phunq 02 сентября 2011 - 10:13 в Selenium - Functional Testing

слегка продолжим тему

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

div[
table[
tr[td[span]]]
tr[td[span]]]
tr[td[span]]]
tr[td[span]]]
tr[td[span]]]
]

т.е. здесь нельзя сделать mySelect.selectByValue("val1");
потому что нет value

ну а конструкция обрисованнаяч в первом посте по прежнемы выкидывает UnsupportedCommandException



#92879 тест не запускается через IE

Отправлено автор: phunq 19 августа 2011 - 10:56 в Selenium - Functional Testing

тест, который прекрасно работает с firefoxdriver, не запускается с ИЕ8 с использование InternetExplorerDriver
просто выводится текст "This is the initial start page for the WebDriver server."
в урле стоит http://localhost:10373/

дальше по урлу не переходит

такая проблема проявляется на нескольких машинах, но не на всех

может кто-то сталкивался?



#92878 как сделать multy select

Отправлено автор: phunq 19 августа 2011 - 10:43 в Selenium - Functional Testing

как сделать мультиселект в списке? имитации ctrl+mouseclick

нашел вот такой вариант

Actions builder = new Actions(wd);	
		   builder.keyDown(Keys.CONTROL)		   
	       .click(we1)
	       .click(we2)
	       .keyUp(Keys.CONTROL);
		 Action selectMultiple = builder.build();
		 selectMultiple.perform();

но он кидает ошибку(браузер firefox 3.6):

Exception in thread "main" org.openqa.selenium.UnsupportedCommandException: Unrecognized command: POST /session/a1fc9df8-b46d-48da-8bb8-3f39cddbaf0a/modifier
Build info: version: '2.4.0', revision: '13337', time: '2011-08-12 09:58:05'
System info: os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_26'
Driver info: driver.version: RemoteWebDriver
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:407)
	at org.openqa.selenium.remote.RemoteWebDriver$RemoteKeyboard.pressKey(RemoteWebDriver.java:642)
	at org.openqa.selenium.interactions.KeyDownAction.perform(KeyDownAction.java:40)
	at org.openqa.selenium.interactions.CompositeAction.perform(CompositeAction.java:31)

видимо чтото опять недопилено для фаерфокса - несмотря на выход финальной версии
какие есть еще варианты?



#92313 опять про селениум и файл диалоги

Отправлено автор: phunq 08 августа 2011 - 08:02 в Selenium - Functional Testing

Да, это поле input типа file.

WebElement fileInput = driver.findElement(By.name("file_1"));
fileInput.sendKeys(pathToYourFile);


А вот для download поддержки пока нет.


а понятно... я понадеялся несколько на другое



#92293 опять про селениум и файл диалоги

Отправлено автор: phunq 08 августа 2011 - 05:42 в Selenium - Functional Testing

WebDriver имеет полноценную поддержку для аплоад-диалогов.
Просто делаете fileInputField.sendKeys(pathToYourFile) -- и всё работает.



fileInputField - это что? поле для ввода файла файлового диалога браузера?
если так - то как его определить?

у webdriver я такого метода или поля не вижу... если можно разъясните поподробнее(если можно с примерами) - гугл ничего конкретного не говорит

так же интересно есть ли какие то методы у webdriver для работы с savefileddialog
конечно для фаерфокса его можно закрывать с помощью java robot, но есть надежда что и для этого чтото было реализовано



#92108 опять про селениум и файл диалоги

Отправлено автор: phunq 05 августа 2011 - 04:56 в Selenium - Functional Testing

Нативные методы... Переходите уже на 2.0 :)


а что сделано в 2,0 для работы с файловыми диалогами? мы как раз с нуля внедряем 2,0



#92075 опять про селениум и файл диалоги

Отправлено автор: phunq 04 августа 2011 - 12:11 в Selenium - Functional Testing



может так?

selenium.type("locator", "/var/www/file.log");
только запускать как *chrome


честно говоря не понял о чем речь

в поля для ввода адреса записывать не получится - у браузеров есть защиты от интернет-ботов, которые портят ссылки


защиты от ботов, которые портят ссылки? эт как?


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



#92071 опять про селениум и файл диалоги

Отправлено автор: phunq 04 августа 2011 - 11:50 в Selenium - Functional Testing

может так?

selenium.type("locator", "/var/www/file.log");
только запускать как *chrome


честно говоря не понял о чем речь

в поля для ввода адреса записывать не получится - у браузеров есть защиты от интернет-ботов, которые портят ссылки



#92070 опять про селениум и файл диалоги

Отправлено автор: phunq 04 августа 2011 - 11:48 в Selenium - Functional Testing

Я как раз таки решал проблему через AutoIt, но интересно узнать и о других возможных решениях.


а для справки, пожалуйста, расскажите еще и про autoit...



#92065 опять про селениум и файл диалоги

Отправлено автор: phunq 04 августа 2011 - 10:48 в Selenium - Functional Testing

подниму опять тему про файлдиалоги и отсутвие доступа к ним из селениума

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

и возник вопрос - возможно ктото применял подход - управлять диалогом браузера прямо из java? (програмно записать путь к файлу и нажать кнопку)
понятно что универсально для всех браузеров написать сложно - но для начала хватило бы решения для фаерфокса

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

и вообще как решаете проблему работы с openfile dialog и savefile dialog ?



#91226 Вопросы по миграции с Sekenium 1.0 на 2.0

Отправлено автор: phunq 13 июля 2011 - 11:50 в Selenium - Functional Testing

скачали на днях релиз selenium 2.0 и пытаемся заменить бету
сразу бросилось в глаза - в классе WebElement теперь отсуствует метод getValue()
ранее он использовался для получение значений из эдитов и textarea - getText() тогда ничего не возвращал

что нужно использовать теперь?



#87848 события мыши (mousemove, mouseover) в webdriver

Отправлено автор: phunq 04 мая 2011 - 13:44 в Selenium - Functional Testing

Потому что рано Вы решили использовать Selenium 2 в промышленных проектах, не забывайте, что это ещё бета-версия -- Advanced User Interaction API реализован пока только в IE и HtmlUnit, а Вы, видимо, использовали какой-то другой браузер.
Можно, конечно, реализовать с использованием RenderedWebElement (как это было в оригинальном WebDriver, до слияния), но он deprecated, то есть когда Advanced User Interaction API будет реализован полностью, RenderedWebElement исчезнет (и это должно случиться до финального релиза), и Вам придется переписывать тесты.
Так что либо смиритесь с неудобствами использования бета-версии, либо пока продолжайте разрабатывать тесты на Selenium 1.0


Спасибо - все понятно. Как мне кажется, я могу использовать комбинированный подход для написания тестов, т.е. на ряду с использованием второй версии так же применять куски кода с использованием WebDriverBackedSelenium. Ибо объектная модель, реализуемая во второй версии выглядит более интересной и гибкой.

PS - запускал под firefox



#87839 события мыши (mousemove, mouseover) в webdriver

Отправлено автор: phunq 04 мая 2011 - 12:55 в Selenium - Functional Testing

я использовал такой код - преобразовал из вашего. Если я правильно понимаю логику actiongenerator - строим действие, в конце вызываем build, затем perform, для его исполнения

Внес изменения потому, что элемента tabularReportPopupMenuDivVisible не существует пока не было события mouseover, следовательно получить по findelement его нельзя до события.

	ActionChainsGenerator builder = ((HasInputDevices) wd).actionsBuilder();
	Action act = builder.moveToElement(wd.findElement(By.xpath("//div[@class='tabularReportPopupMenuDiv' and @_dde='1']"))).build();		
	act.perform();    
	builder.click(wd.findElement(By.cssSelector("div.tabularReportPopupMenuDivVisible"))).build().perform();


на строке:

        act.perform(); 

получаем UnsupportedOperationException
что я делаю не так?



#87819 события мыши (mousemove, mouseover) в webdriver

Отправлено автор: phunq 04 мая 2011 - 11:54 в Selenium - Functional Testing

натыкался на эту статью - но тут не совсем понятно как это все реализуется.
упоминается интерфейс Mouse - но как он используется в ActionChainsGenerator мне осталось не ясно

если не сложно приведите пример в рамках основного вопроса.



#87804 события мыши (mousemove, mouseover) в webdriver

Отправлено автор: phunq 04 мая 2011 - 11:15 в Selenium - Functional Testing

Извиняюсь если повтор, но поиск ничего пригодного не дал. Совсем недавно стали изучать selenium, сразу с версии 2.0 (с использованием webdriver).

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

существует рабочий вариант с использованием WebDriverBackedSelenium:

Selenium selenium = new WebDriverBackedSelenium(wd, context.sUrl);
selenium.mouseOver("//div[@class='tabularReportPopupMenuDiv' and @_dde='1']");
selenium.mouseDown("css=div[class='tabularReportPopupMenuDivVisible']");

но мне кажется должен быть вариант без использования селениум 1.0.
Подскажите, пожалуйста, как реализуются такие вещи на webdriver.

Заранее, всем спасибо за участие.