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

Публикации leipreachan

94 публикаций создано leipreachan (учитываются публикации только с 26 июня 2023)



#127914 Не работает идентификация пользователя

Отправлено автор: leipreachan 06 марта 2014 - 13:37 в Selenium - Functional Testing

Уважаемый,

1) я знаю, что такое оверквоттинг и создаю его не злонамеренно, да, более того, даже не специально

2) я не нажимаю "Цитата", я нажимаю "Ответить". Вам прикрепить видеоролик с описанием проблемы?

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

А то получается сапожник без сапог какой-то.

 

вообще, я считаю, что оверквоттинг не лучше оффтопика.




#127248 Selenium + PHP + ?

Отправлено автор: leipreachan 19 февраля 2014 - 11:46 в Selenium - Functional Testing

Хотелось бы узнать сколько людей юзает такую связку? У скольких  все тесты запускаются, без долгого мозгоё..тва? Как по мне, пока php официально не будет поддерживаться Selenium, писать тесты в такой связке точно не в удовольствие, а тем более для начинающих автоматизаторов. Большинство новичков привлекает эта связка только потому что php легок в обучении...

 

 

В чем проблема лично у вас при написании тестов на php? (если в компании всё пишется на php)

Что вам нужно от официальной поддержки? Биндинги? JsonWired protocol - это официально поддерживаемая часть Selenium.

А из компаний, который используют php + selenium я вам назову, например, Facebook




#129715 Запуск тестов в одном браузере

Отправлено автор: leipreachan 17 апреля 2014 - 11:03 в Selenium - Functional Testing

Всем добрый день!!!

Вопрос такого плана(С#).

Вообщем есть несколько тестов.

Gо окончанию теста браузер закрывается и снова идет запуск.

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

Спасибо!!!

 

Обычно тестовый фреймворк закрывает сессию (и браузер) в tearDown() методе (или его аналоге)

 

Вам следует переопределить tearDown(), чтобы сессия не закрывалась автоматически, а закрывалась только, например, в tearDownAfterClass().

Разумеется, в setUp() методе следует проверять наличие активной сессии.

 

У меня так и реализовано.

 

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




#126488 Как изменить firefoxDriver.js

Отправлено автор: leipreachan 03 февраля 2014 - 09:49 в Selenium - Functional Testing

если хотите проставить куки на домене вида *.вашдомен.com из кода, который выполняется на вашдомен.com, только по-быстрому, то по-быстрому так не получится:) создайте пустую страницу на нужном домене и проставляйте куки на ней.

либо используйте готовый профиль

 

 

Здравствуйте!

 

Возник следующий вопрос: как изменить файл firefoxDriver.js? Не могу найти место, где он лежит. Или нужно качать исходники, в них менять этот файл и собирать из исходников?

Хочу удалить вот этот код:

if (currDomain.indexOf(cookie.domain) == -1) {  // Not quite right, but close enough
   throw new WebDriverError(ErrorCode.INVALID_COOKIE_DOMAIN,
       "You may only set cookies for the current domain");
 }

так как необходимо обойти валидацию домена во время установки cookies.

Спасибо за ответ!




#126588 Как изменить firefoxDriver.js

Отправлено автор: leipreachan 05 февраля 2014 - 08:12 в Selenium - Functional Testing

Вот так все работает:

>>> from selenium import webdriver
>>> ff = webdriver.Firefox()
>>> ff.add_cookie({'domain': 'localhost', 'name': 'test', 'value': 123})
>>> ff.get('http://localhost:8888/')

Кука установилась. Думаю, что и для других доменов все будет в порядке.

Если нужно (и можно) - могу выложить модифицированый webdriver.xpi

 

1) Вы можете ставить куки через JS - в тесте прямо модифицируете код страницы, добавляя к нему кусок JS, чтобы он ставил за вас нужные вам куки

2) Вы можете использовать BrowserMob, который будет встраивать JS ещё до селениума

 

с другой стороны, если вас устраивает перекомпиляция webdriver-а, то это тоже решение =)




#126128 Ability to fetch slotCounts from /grid/api/hub

Отправлено автор: leipreachan 23 января 2014 - 13:46 в Selenium - Functional Testing

Как обычно, ответы на свои вопросы я нахожу сам.

 

Итак, если кому-то это интересно и человек забредёт в этот топик, то ответ ниже.

 

запускаем сервер:

$ java -jar selenium-server-2.37.0.jar -role hub -hubConfig hub.json -servlets org.openqa.grid.web.servlet.HubStatusServlet

и далее через cURL кидаем запрос:

$ сurl -XGET http://localhost:5555/grid/api/hub -d '{"configuration":["slotCounts"]}'

Через firefox / phpstorm / eclipse и т.п., через различные приблуды и расширения FF и Chrome этого не получается сделать, т.к. запрос нарушает RFC. Но curl делает то, что вы ему скажете. И возвращает ответ :)




#124900 Ability to fetch slotCounts from /grid/api/hub

Отправлено автор: leipreachan 09 декабря 2013 - 16:22 в Selenium - Functional Testing

Привет

в ченджлогу для версии 36 интересная вещь упомянута:
* Added ability to fetch slotCounts from /grid/api/hub. The resource
looks like this:
{ "slotCounts": { "total": 20, "free": 8 } }
* Added ability to fetch newSessionRequestCount from the
/grid/api/hub resource.


Кроме того, вот такая штука в HubStatusServlet.java:
/**
* API to query the hub config remotely.
*
* use the API by sending a GET to grid/api/hub/
* with the content of the request in JSON,specifying the
* parameters you're interesting in, for instance, to get
* the timeout of the hub and the registered servlets :
*
* {"configuration":
* [
* "timeout",
* "servlets"
* ]
* }
*
* if no param is specified, all params known to the hub are returned.
*
* {"configuration": [] }
*
*/




Только у меня ничего не получается.
Какой реквест надо сформировать, кто-нибудь знает?

Запускаю сервер

java -jar selenium-server-2.37.0.jar -role hub -hubConfig hub.json -servlets org.openqa.grid.web.servlet.HubStatusServlet

кидаю GET:

http://localhost:5555/grid/api/hub/ - возвращается конфигурация.
А как запросить свободные слоты-то? Что я ни кидаю - всегда возвращается полная конфигурация.

Заранее спасибо



#126490 Как использовать PHPBrowserMobProxy

Отправлено автор: leipreachan 03 февраля 2014 - 09:53 в Selenium - Functional Testing

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

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

target="_blank"  у элемента можно было убрать =)




#126587 Как использовать PHPBrowserMobProxy

Отправлено автор: leipreachan 05 февраля 2014 - 08:09 в Selenium - Functional Testing

 

 

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

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

target="_blank"  у элемента можно было убрать =)

 

В том то и дело, что нельзя. Сайт сторонний 

 

 

Ну вы же на него заходите селениумом?

Так используйте setAttribute('target','')




#127450 Selenium+PHPUnit свежая документация

Отправлено автор: leipreachan 25 февраля 2014 - 09:27 в Selenium - Functional Testing

phpunit.de




#127586 Selenium+PHPUnit как обращаться к своему курсору мыши из селениума

Отправлено автор: leipreachan 27 февраля 2014 - 11:17 в Selenium - Functional Testing

 

 

вот мне нужно реализовать такую команду

dragAndDropToObject ( locatorOfObjectToBeDragged,locatorOfDragDestinationObject ) 
можете пример привести как конкретно, потому что при наведении на ту форму мышью, её курсор изменён на свой?

 

А какая разница, как выглядит курсор мыши? В смысле, как, по-вашему, зависят действия:
1) найти первый объект по локатору
2) найти второй объект по локатору
3) схватить мышью первый объект
4) переместить курсор мыши на второй объект
5) отпустить мышь
от формы курсора мыши?

Вообще, форма курсора мыши - лишь визуализация. Сама "мышь" в понимании ОС - это точка, бегающая по экрану.

P.S. А Вы в курсе, что при наведении мышки на кнопку курсор один, при наведении мышки на ссылку курсор другой, а просто так курсор может быть третьим? И как в таком случае кликать по ссылкам и кнопочкам - проблемы возникают?

 

не получается просто так взять и схватить объект и перетащить.также не получат листбокс раскрыть.форма проекта одна и та же по дизайну и по вёрстки для обоих функционалов

 

 

1) мы тут не телепаты :) мы не видим, что кроется под вашей фразой "не получается просто так взять и схватить объект и перетащить". Что получается? какие JS ошибки? Что говорит selenium RC по этому поводу? Пробовали то же самое на Webdriver сделать? А какой браузер? А какая версия?

2) С листбоксом отдельный вопрос. Что это? html-элемент select? или что-то своё, внутрипроектное?

 

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




#127501 Selenium+PHPUnit как обращаться к своему курсору мыши из селениума

Отправлено автор: leipreachan 26 февраля 2014 - 09:27 в Selenium - Functional Testing

Если в коде был изменён курсор мыши на свой, то как к нему обращаться из селениума?
attachicon.gifcursor.png

через javascript




#126618 Тесты падают изза реализации выхода из системы

Отправлено автор: leipreachan 05 февраля 2014 - 12:41 в Selenium - Functional Testing

 

опять StaleElement =)

обычно это значит, что у вас перерисовывается DOM-дерево и элементы "мигнули" на страницы (удалились, потом опять добавились)

 

из комментария не очень очевидно, на какой строке падает. На клике или wait?

попробуйте вот этот кусок:

<code>

WebElement element = wait.until(elementPresentWithAtribute("id", "tm-logoff"));
if (logoffLink.isDisplayed()) {
driver.findElement(By.id("tm-logoff")).click();


return pages.loginPage;
}

</code>

Вытащить в отдельный метод и обернуть в try{}catch{} по StaleElementReferenceException и выполнять его раза три-четыре.

Лично мне такой хак помогал.

Кроме того, возможно, вы обращаетесь, всё-таки, к неправильному элементу. В Firebug  есть возможность подсвечивать элементы, которые появляются на странице. Убедитесь, что нужный вам элемент не "перепоявялется"

 

Падает на 

new Actions(driver).moveToElement(userActionsGroup).perform();

ибо, как уже говорилось, даже меню не раскрывает

 

 

1) говорилось "почемуто отрабатывает через раз."

что конкретно - вы нигде не написали.

 

2) Попробуйте элемент не задавать через аннотацию, а искать непосредственно перед выполнением нужного вам кода. Как я уже говорил, возможно, происходит полное перестраивание DOM-дерева - никто не знает, что за JS-движок у вас на сайте. StaleElementException указывает в 90% случаев именно на это - DOM поменялся и элемента с таким же внутренним идентификатором (не css / xpath локатором, а именно внутренним идентификатором в движке браузера) уже нет.




#126586 Тесты падают изза реализации выхода из системы

Отправлено автор: leipreachan 05 февраля 2014 - 08:08 в Selenium - Functional Testing

опять StaleElement =)

обычно это значит, что у вас перерисовывается DOM-дерево и элементы "мигнули" на страницы (удалились, потом опять добавились)

 

из комментария не очень очевидно, на какой строке падает. На клике или wait?

попробуйте вот этот кусок:

<code>

WebElement element = wait.until(elementPresentWithAtribute("id", "tm-logoff"));
if (logoffLink.isDisplayed()) {
driver.findElement(By.id("tm-logoff")).click();


return pages.loginPage;
}

</code>

Вытащить в отдельный метод и обернуть в try{}catch{} по StaleElementReferenceException и выполнять его раза три-четыре.

Лично мне такой хак помогал.

Кроме того, возможно, вы обращаетесь, всё-таки, к неправильному элементу. В Firebug  есть возможность подсвечивать элементы, которые появляются на странице. Убедитесь, что нужный вам элемент не "перепоявялется"




#127681 Selenium RC + PHPUnit. Создание нового окна

Отправлено автор: leipreachan 03 марта 2014 - 07:47 в Selenium - Functional Testing

 

 

Возникла с открытием нового окна.

Если я нахожусь на сайте с https, то команда

$this->openWindow('http://primer.ru', 'primer');
$this->selectWindow('primer');

выдает ошибка, что окна "primer" не существует. Хотя я вижу, что оно открыто. Таймауты не помогают. Также я пробовала выводить список открытых окон. Окна "primer" в этом списке не было, будто оно и не открывалось.

 

Как можно обойти это?

 

Более правильно будет:

$this->selectWindow('name=primer');

насколько я помню, openWindow именно имя окна задаёт

 

Нет, он именно окно создает с именем "primer". 

Но тут казус. Он вроде бы его создает, я его вижу открытым. НО! Сам селениум его не видит. Говорит, что нет такого окна, как бы я его не искала

 

ну так я вам и предлагаю обратиться к окну по имени

если вы используете Selenium RC,  а не webdriver, то selectWindow предполагает в качестве аргумента локатор в виде:

title=заголовок_окна

name=название_окна

var=переменная_окна

 

openWindow, насколько мне не изменяет память, создаёт именно окно с имененм, которое вы указываете вторым аргументом

 

тут вот: http://release.selen...va.lang.String)

ссылка на старое API для java. Но оно на 99% повторяет API для php, особенно в плане формата данных, попадающих на сервер. Так что попробуйте, всё-таки,

$this->selectWindow('name=primer');




#127628 Selenium RC + PHPUnit. Создание нового окна

Отправлено автор: leipreachan 28 февраля 2014 - 09:22 в Selenium - Functional Testing

Возникла с открытием нового окна.

Если я нахожусь на сайте с https, то команда

$this->openWindow('http://primer.ru', 'primer');
$this->selectWindow('primer');

выдает ошибка, что окна "primer" не существует. Хотя я вижу, что оно открыто. Таймауты не помогают. Также я пробовала выводить список открытых окон. Окна "primer" в этом списке не было, будто оно и не открывалось.

 

Как можно обойти это?

 

Более правильно будет:

$this->selectWindow('name=primer');

насколько я помню, openWindow именно имя окна задаёт




#124564 Обновил selenium-standalone, перестали регистрироваться ноды

Отправлено автор: leipreachan 29 ноября 2013 - 12:30 в Selenium - Functional Testing

Всем привет!

Буквально еще вчера использовал selenium-server-standalone-2.31.0, сегодня решил обновиться до последней версии 2.37.0. Хаб запустился, а вот ноды никак не могу зарегистрироваться на хабе, причем в логе хаба пишет, что они зарегены. Попробовал запустить 31-ю версию, все подключилось мгновенно. Что изменилось в 37-й версии?

в 34й изменился механизм выдачи id сессии.
Ноды и грид одной версии?



#124894 Обновил selenium-standalone, перестали регистрироваться ноды

Отправлено автор: leipreachan 09 декабря 2013 - 15:11 в Selenium - Functional Testing



Всем привет!

Буквально еще вчера использовал selenium-server-standalone-2.31.0, сегодня решил обновиться до последней версии 2.37.0. Хаб запустился, а вот ноды никак не могу зарегистрироваться на хабе, причем в логе хаба пишет, что они зарегены. Попробовал запустить 31-ю версию, все подключилось мгновенно. Что изменилось в 37-й версии?

в 34й изменился механизм выдачи id сессии.
Ноды и грид одной версии?

Да, конечно. Хаб и ноды всё 37-ой версии. И как теперь быть?



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



#128308 Ожидание появления элемента

Отправлено автор: leipreachan 17 марта 2014 - 07:35 в Selenium - Functional Testing

На сайте имеется кнопка, при нажатии на которую появляется pop-up с выпадающим списком, на который необходимо нажать.

Тем не менее, иногда браузер не успевает отобразить выпадающий список и генерируется ошибка. WaitElement() и Thread.sleep() по какой-то причине иногда не помогают.

Подскажите, пожалуйста, как решить проблему?

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

 

popup с выпадающим списком? это отдельное окно в IE или это какой-то элемент сайта, который маскируется под обычный попап?