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

Фотография

JMeter и XPath Assertion


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

#1 Dzmitry_Kashlach

Dzmitry_Kashlach

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

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Кашлач Дмитрий Сергеевич

Отправлено 12 марта 2012 - 11:21

Доброго дня всем!
Интересует вопрос, как использовать Xpath Assertion не в XML-документах, а в html?
Пример.
В Selenium IDE составляю Xpath - //input[@class='submit'] для страницы http://tut.by
Проверяю - точно работает
Подставляю в JMeter Xpath Assertion -
  2012/03/12 14:26:55 ERROR - jmeter.threads.JMeterThread: Exception processing Assertion  java.lang.ArrayIndexOutOfBoundsException: -1
	at org.apache.xml.dtm.ref.ExpandedNameTable.getType(ExpandedNameTable.java:347)
	at org.apache.xml.dtm.ref.DTMDefaultBase.indexNode(DTMDefaultBase.java:321)
	at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.addNode(DOM2DTM.java:298)
	at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.nextNode(DOM2DTM.java:523)
	at org.apache.xml.dtm.ref.DTMDefaultBase._firstch(DTMDefaultBase.java:533)
	at org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$DescendantFromRootTraverser.getFirstPotential(DTMDefaultBaseTraversers.java:1690)
	at org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$DescendantFromRootTraverser.first(DTMDefaultBaseTraversers.java:1734)
	at org.apache.xpath.axes.DescendantIterator.nextNode(DescendantIterator.java:214)
	at org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:335)
	at org.apache.xpath.axes.NodeSequence.runTo(NodeSequence.java:494)
	at org.apache.xml.dtm.ref.DTMNodeList.<init>(DTMNodeList.java:81)
	at org.apache.xpath.objects.XNodeSet.nodelist(XNodeSet.java:346)
	at org.apache.jmeter.util.XPathUtil.computeAssertionResult(XPathUtil.java:380)
	at org.apache.jmeter.assertions.XPathAssertion.getResult(XPathAssertion.java:120)
	at org.apache.jmeter.threads.JMeterThread.processAssertion(JMeterThread.java:685)
	at org.apache.jmeter.threads.JMeterThread.checkAssertions(JMeterThread.java:676)
	at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:427)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
	at java.lang.Thread.run(Unknown Source)


Я что-то не так делаю?
В прикреплённом файле - тест-план, нужно заменить его расширение на *.jmx
Duration Assertion вставил для того, чтобы убедиться, что страница точно грузится.

Прикрепленные файлы


  • 0

#2 volk's

volk's

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Leo

Отправлено 05 апреля 2012 - 11:28

Доброго дня всем!
Интересует вопрос, как использовать Xpath Assertion не в XML-документах, а в html?
Пример.
В Selenium IDE составляю Xpath - //input[@class='submit'] для страницы http://tut.by
Проверяю - точно работает
Подставляю в JMeter Xpath Assertion -

  2012/03/12 14:26:55 ERROR - jmeter.threads.JMeterThread: Exception processing Assertion  java.lang.ArrayIndexOutOfBoundsException: -1
	at org.apache.xml.dtm.ref.ExpandedNameTable.getType(ExpandedNameTable.java:347)
	at org.apache.xml.dtm.ref.DTMDefaultBase.indexNode(DTMDefaultBase.java:321)
	at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.addNode(DOM2DTM.java:298)
	at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.nextNode(DOM2DTM.java:523)
	at org.apache.xml.dtm.ref.DTMDefaultBase._firstch(DTMDefaultBase.java:533)
	at org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$DescendantFromRootTraverser.getFirstPotential(DTMDefaultBaseTraversers.java:1690)
	at org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$DescendantFromRootTraverser.first(DTMDefaultBaseTraversers.java:1734)
	at org.apache.xpath.axes.DescendantIterator.nextNode(DescendantIterator.java:214)
	at org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:335)
	at org.apache.xpath.axes.NodeSequence.runTo(NodeSequence.java:494)
	at org.apache.xml.dtm.ref.DTMNodeList.<init>(DTMNodeList.java:81)
	at org.apache.xpath.objects.XNodeSet.nodelist(XNodeSet.java:346)
	at org.apache.jmeter.util.XPathUtil.computeAssertionResult(XPathUtil.java:380)
	at org.apache.jmeter.assertions.XPathAssertion.getResult(XPathAssertion.java:120)
	at org.apache.jmeter.threads.JMeterThread.processAssertion(JMeterThread.java:685)
	at org.apache.jmeter.threads.JMeterThread.checkAssertions(JMeterThread.java:676)
	at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:427)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
	at java.lang.Thread.run(Unknown Source)


Я что-то не так делаю?
В прикреплённом файле - тест-план, нужно заменить его расширение на *.jmx
Duration Assertion вставил для того, чтобы убедиться, что страница точно грузится.

попробуй вот так //input[@class='submit']@value
  • 0

#3 Dzmitry_Kashlach

Dzmitry_Kashlach

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

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Кашлач Дмитрий Сергеевич

Отправлено 06 апреля 2012 - 11:53

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

попробуй вот так //input[@class='submit']@value


Пробовал,
  Assertion error: true
Assertion failure: false
Assertion failure message: TransformerException: Дополнительные недопустимые маркеры: '@', 'value' for://input[@class='submit']@value

//input[@class='submit']\@value

  Assertion error: true
Assertion failure: false
Assertion failure message: TransformerException: Дополнительные недопустимые маркеры: '\', '@', 'value' for://input[@class='submit']\@value



//input[@class='submit']/@value


  Assertion error: true
Assertion failure: false
Assertion failure message: TransformerException: -1 for://input[@class='submit']/@value


Вроде всё перепробовал :help:
  • 0

#4 volk's

volk's

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Leo

Отправлено 06 апреля 2012 - 12:01

перезалей файл, он не открывается, пишет error in test plan

Сообщение отредактировал volk's: 06 апреля 2012 - 12:08

  • 0

#5 Dzmitry_Kashlach

Dzmitry_Kashlach

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

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Кашлач Дмитрий Сергеевич

Отправлено 07 апреля 2012 - 07:17

Довольно странно, у меня скачался и открылся. Ну да ладно, перезаливаю, переименовывать не нужно, файл внутри архива.

Прикрепленные файлы


  • 0

#6 volk's

volk's

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Leo

Отправлено 07 апреля 2012 - 10:20

//input[@class='submit']/@value
правильный вид запроса.
думаю, проблема в том, что надо включить cookies
погугли, в jmeter есть http cookie manager
потом еще посмотрю, ща прост занят немного
  • 0

#7 APC

APC

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

  • Members
  • PipPipPipPip
  • 293 сообщений
  • ФИО:Похилько Андрей Федорович
  • Город:Москва


Отправлено 08 апреля 2012 - 07:27

Совет бывалых - по возможности использовать вместо XPath Assertion менее ресурсоемкие варианты. Response Assertion чаще всего. XPath в JMeter очень прожорлив по ресурсам.
  • 1

#8 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 09 апреля 2012 - 07:53

Совет бывалых - по возможности использовать вместо XPath Assertion менее ресурсоемкие варианты. Response Assertion чаще всего. XPath в JMeter очень прожорлив по ресурсам.


Вы правы. Действительно, сейчас потестировал у себя.
Простое переписывание с Xpath "//ERROR" на regexp "(?is)<ERROR>(.*)</ERROR>" сократило мне потребление CPU почти вдвое.
Спасибо за совет!
  • 0

#9 Dzmitry_Kashlach

Dzmitry_Kashlach

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

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Кашлач Дмитрий Сергеевич

Отправлено 09 апреля 2012 - 12:05

Совет бывалых - по возможности использовать вместо XPath Assertion менее ресурсоемкие варианты. Response Assertion чаще всего. XPath в JMeter очень прожорлив по ресурсам.

Спасибо, так и есть.
  • 0


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

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