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

Фотография

WebDriver + Thucydides + POST requests


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 21

#1 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 26 февраля 2014 - 12:43

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

 

столкнулся с проблемой следующего характера:

 

есть несколько текстбоксов на странице,в них вводится информация, после этого нажимается кнопка "сабмит".

 

и на сервер отправляется POST, но селениум не работает с ПОСТ.

 

Нашел информацию по HttpClient, но не могу понять,как передавать параметры в пост запрос и выполнять его после этого.

 

вот пример строки с параметрами:

 

URL?hascardreader=0&device_id=&product=prod_value&quantity_product1=1&quantity_product2=1&paymethod=BANK_TRANSFER&different_shippingaddress=1

 

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

 

org.apache.http.client.HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(URL);

        List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
        urlParameters.add(new NameValuePair("",""));
        urlParameters.add(new NameValuePair("",""));
        urlParameters.add(new NameValuePair("",""));
        urlParameters.add(new NameValuePair("",""));


        post.setEntity(new UrlEncodedFormEntity(urlParameters));
        HttpResponse response = client.execute(post);

 

 

буду признателен за совет и пример,как реализовать это.

 

спасибо


  • 0

#2 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 26 февраля 2014 - 12:57

hascardreader_value = "value"

rlParameters.add(new NameValuePair("hascardreader",  hascardreader_value));

 

в синтаксисе могу ошибаться, я не джавист.


  • 0

#3 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 26 февраля 2014 - 12:57

 

 

после этого нажимается кнопка "сабмит".
и на сервер отправляется POST, но селениум не работает с ПОСТ.

Расшифруйте.


  • 0

#4 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 26 февраля 2014 - 12:59

Вы будете удивлены:

        urlParameters.add(new NameValuePair("hascardreader","0"));
        urlParameters.add(new NameValuePair("device_id",""));
        urlParameters.add(new NameValuePair("product","prod_value"));
        ............

:yes:


  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#5 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 26 февраля 2014 - 13:02

 

 

 

после этого нажимается кнопка "сабмит".
и на сервер отправляется POST, но селениум не работает с ПОСТ.

Расшифруйте.

 

 

ну я так понял человеку надо ПОСТ запрос отправить и получить ответ, не может он УРЛ составить, точнее параметры забить, ну и нагуглил где-то кусок кода который ему не понятен...

Так как он использует Thucydides , то возможно у него всё может получиться и даже ответ он возможно сможет обработать корректно, и даже поставить результат обработки запроса в нужное для фрэймворка значение...


  • 0

#6 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 26 февраля 2014 - 13:02

Ещё больше Вы будете удивлены, узнав, что Selenium прекрасно отправляет POST-запросы :)

 

Точнее, Selenium вообще ничего не отправляет -- он кнопки жмёт, а отправляет браузер


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 26 февраля 2014 - 13:04

Во коллеги говорят, что ему и этого куска кода не нужно.


  • 0

#8 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 26 февраля 2014 - 13:12

Во коллеги говорят, что ему и этого куска кода не нужно.

Не могли бы Вы пояснить


  • 0

#9 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 26 февраля 2014 - 13:15

 

 

 

 

после этого нажимается кнопка "сабмит".
и на сервер отправляется POST, но селениум не работает с ПОСТ.

Расшифруйте.

 

 

ну я так понял человеку надо ПОСТ запрос отправить и получить ответ, не может он УРЛ составить, точнее параметры забить, ну и нагуглил где-то кусок кода который ему не понятен...

Так как он использует Thucydides , то возможно у него всё может получиться и даже ответ он возможно сможет обработать корректно, и даже поставить результат обработки запроса в нужное для фрэймворка значение...

 

абсолютно верно, только я не совсем понял часть про Thucydides :)  в моем случае,да..мне необходимо пост запрос отправить, поскольку после заполнения формы и нажатия на кнопку next/submit я вместо страницы confirmation получаю сообщение "{"status":{"code":405,"errors":[{"code":405,"message":"Only POST data is allowed."}],"result":"ko","message":"Only POST data is allowed."},"meta":{"session_token":{"content":"q8bf7pbcsbm1pb56r5quqldav1"},"version":"73","min_version":"0"}}"


  • 0

#10 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 26 февраля 2014 - 13:15

Ещё больше Вы будете удивлены, узнав, что Selenium прекрасно отправляет POST-запросы :)

 

Точнее, Selenium вообще ничего не отправляет -- он кнопки жмёт, а отправляет браузер

 

 

 

Во коллеги говорят, что ему и этого куска кода не нужно.

Не могли бы Вы пояснить

 

 

что тут пояснять? ПОСТ запрос отправляется браузером когда вы нажимаете кнопку САБМИТ. селениум не работает с пост запросами только либо потому что он работает с браузером, который в свою очередь прекрасно работает с ПОСТ запросами.


  • 0

#11 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 26 февраля 2014 - 13:16

абсолютно верно, только я не совсем понял часть про Thucydides :)  в моем случае,да..мне необходимо пост запрос отправить, поскольку после заполнения формы и нажатия на кнопку next/submit я вместо страницы confirmation получаю сообщение "{"status":{"code":405,"errors":[{"code":405,"message":"Only POST data is allowed."}],"result":"ko","message":"Only POST data is allowed."},"meta":{"session_token":{"content":"q8bf7pbcsbm1pb56r5quqldav1"},"version":"73","min_version":"0"}}"

 

 

это проблема формы на кнопку САБМИТ которой вы нажали.

 

http://www.w3schools...form_method.asp почитайте вот


  • 0

#12 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 26 февраля 2014 - 13:20

Ещё больше Вы будете удивлены, узнав, что Selenium прекрасно отправляет POST-запросы :)

 

Точнее, Selenium вообще ничего не отправляет -- он кнопки жмёт, а отправляет браузер

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

 

 есть вот,что

  @Step
    public void clickOnBuyNowButton(){
       abstractOrderPage.getNext2Button().click();}

 

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


  • 0

#13 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 26 февраля 2014 - 13:24

всем,спасибо.. еще одно дополнение.. до этого предыдущая страница сабмитилась нормально,потом переходит на эту.

вот,что я нашел

 

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

<form id="form_reg-main" class="qualiform form-vertical" action="/api/merchant/registering" method="POST">

 

а вот,что для второй,которая выдает ошибку

<form id="form_payment" class="qualiform form-vertical" action="/api/merchant/update" method="BYPASS">
 
видимо,действительно-проблема формы сабмита

  • 0

#14 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 03 марта 2014 - 10:53

 

всем,спасибо.. еще одно дополнение.. до этого предыдущая страница сабмитилась нормально,потом переходит на эту.

вот,что я нашел

 

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

<form id="form_reg-main" class="qualiform form-vertical" action="/api/merchant/registering" method="POST">

 

а вот,что для второй,которая выдает ошибку

<form id="form_payment" class="qualiform form-vertical" action="/api/merchant/update" method="BYPASS">
 
видимо,действительно-проблема формы сабмита

 

девелоперы исправили , и теперь вновь обе страницы имеют "POST" метод, но на первой страници нажатие на клавишу "submit" отрабатывате нормально, а на второй-нет. Такое ощущение,что не отрабатывает JS,я проверил,везде JS is enabled. Пробовал нажать на кнопку с помощью evaluateJavaScript(...) из Thucydides.

ex.: evaluateJavascript("document.getElementById('submit').click()");

уже и не знаю,что делать,перепробовал различные варианты-не нажатие происходит,но переход на нужную страницы-нет,выдает сообщение, о том,что произошло в БД,что все успешно,но на нужную страницу,как в первом случае не переходит.


  • 0

#15 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 03 марта 2014 - 11:34

девелоперы исправили , и теперь вновь обе страницы имеют "POST" метод, но на первой страници нажатие на клавишу "submit" отрабатывате нормально, а на второй-нет. Такое ощущение,что не отрабатывает JS,я проверил,везде JS is enabled. Пробовал нажать на кнопку с помощью evaluateJavaScript(...) из Thucydides.

ex.: evaluateJavascript("document.getElementById('submit').click()");
уже и не знаю,что делать,перепробовал различные варианты-не нажатие происходит,но переход на нужную страницы-нет,выдает сообщение, о том,что произошло в БД,что все успешно,но на нужную страницу,как в первом случае не переходит.


Вы руками эту кнопку нажимать пробовали? Работает?
Если руками работает, значит ищите кликабельный тэг, по которому будете кликать селениумом (вероятно, это будет не <form>).
Если руками не работает, то на селениум и грешить нечего!
  • 0
Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

#16 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 03 марта 2014 - 11:42

1.Если я нажимаю на кнопку в обычном режиме. дохожу до этой страницы вручную,а потом жму кнопку сабмит, тогда-все ок!

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


  • 0

#17 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 03 марта 2014 - 12:46

Могу добавить следующее:

 

проверил,что происходит после нажатия на кнопку на второй странице

 

Вариант с ручным нажатием:

два запроса и после этого я получаю confirmation page

POST https://HOST/api/merchant/update

POST https://HOST/api/user/logout

 

Вариант с Selenium:

один запрос и сообщение об ошибке

POST https://login:passwo...merchant/update

 

сообщение следующее:

The character encoding of the plain text document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the file needs to be declared in the transfer protocol or file needs to use a byte order mark as an encoding signature.


  • 0

#18 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 03 марта 2014 - 14:10

Уточнение:  данная ситуёвина складывается,только в FF я проверил в версиях 25-28.

 в Chrome все работает без проблем. 

 

Буду признателен,если подскажете ,как решить данную проблему для FF.

 

Информцаия об установленной у меня версии:  Thucydides v.0.9.229 incl. Selenium 2.39.0


  • 0

#19 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 03 марта 2014 - 14:32

а когда руками в FF жмёте эту кнопку тоже валится или нет? Без автоматизации вообще.


  • 0

#20 sashikus

sashikus

    Новый участник

  • Members
  • Pip
  • 20 сообщений


Отправлено 03 марта 2014 - 14:47

а когда руками в FF жмёте эту кнопку тоже валится или нет? Без автоматизации вообще.

нет,руками без автоматизации работает в любом браузере в любой версии....сдается мне,что проблема либо с Selenium версией,либо с Thucydides...

 

 не знаю,как это и решить


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных