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

Фотография

PHPUnit + Selenium RC + NetBeans


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

#1 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 20 октября 2010 - 11:27

при выполнении скирпта внезапно появилась ошибка

PHPUnit 3.5.0 by Sebastian Bergmann.

Warning: DOMElement::setAttribute(): string is not in UTF-8 in C:\Program Files\PHP\pear\PHPUnit\Util\Log\JUnit.php on line 299
Warning: DOMElement::setAttribute(): string is not in UTF-8 in C:\Program Files\PHP\pear\PHPUnit\Util\Log\JUnit.php on line 413
.
Warning: DOMDocument::saveXML(): output conversion failed due to conv error, bytes 0xF2 0xE5 0xF1 0xF2 in C:\Program Files\PHP\pear\PHPUnit\Util\Log\JUnit.php on line 466

Time: 10 seconds, Memory: 4.50Mb
OK (1 test, 0 assertions)

При этом тест выполнинлся без ошибок, о чём можно судить по ".", но при этом не отображается в NetBeans как выполненный в окне TaskResult

посмотрел на JUnit.php, 299
$testSuite->setAttribute('file', $class->getFileName());
посмотрел на JUnit.php, 413
$testCase->setAttribute('file', $class->getFileName());
используется в этом файле всего в двух местах,...

первая вызвается из function startTestSuite(PHPUnit_Framework_TestSuite $suite)
вторая вызвается из function startTest(PHPUnit_Framework_Test $test)

466 строка - это
public function getXML()
    {
        return $this->document->saveXML();
    }

Если не вдаватся в этот лес, то в общих чертах понятно, что где-то попадает !UTF8 значение в эти методы и поэтому они выдают ошибку.
Вопрос только откуда оно может браться, если весь проект у меня в UTF8 кодировке и нигде я ну просто не помню, чтобы вводил какие-нибудь ёёё в кодировке ANSI...

Может быть ещё у кого-то подобная ошибка возникала?
  • 0

#2 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 20 октября 2010 - 11:36

вы таки будете смеятся, но это особенность Netbeans.

ЕСЛИ вы например захотите сохранить проект - а в netBeans работаешь именно с проектами - в папке d:\se\тетсирование шаблонов Ёо\ - то возникает такая ошибка
нужно для названий папок использвать латиницу. d:\se\test_patterns\

-вот за такие вот надмозги я не люблю все эти чащобы классов.
  • 0

#3 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 22 октября 2010 - 11:01

Подскажите пожалуйста как решить затруднение:

Пусть есть элемент:
<input type="text" value="" name="findtext" id="findtext" style="background-color: rgb(255, 255, 255);">

Нужно проверить что value='' пустая строка.

В IDE код выглядит следующим образом:
<tr>
	<td>storeElementPresent</td>
	<td>//input[@id='findtext' and @name='findtext' and @type='text']</td>
	<td>a1</td>
</tr>
<tr>
	<td>storeAttribute</td>
	<td>//input[@id='findtext' and @name='findtext' and @type='text']@value</td>
	<td>a2</td>
</tr>
<tr>
	<td>echo</td>
	<td>${a1} + ${a2}</td>
	<td></td>
</tr>

результат выполнения -
* [info] Executing: |storeElementPresent | //input[@id='findtext' and @name='findtext' and @type='text'] | a1 |
    * [info] Executing: |storeAttribute | //input[@id='findtext' and @name='findtext' and @type='text']@value | a2 |
    * [info] Executing: |echo | ${a1} + ${a2} | |
    * [info] echo: true + ${a2}

если писать на PHP под RC -
$this->ignoreAttributesWithoutValue(false);
$value = $this->getAttribute('//input[@id=\'findtext\' and @name=\'findtext\' and @type=\'text\']@value');

то выдаёт ошибку (валится тест) -
PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete().
ERROR: Could not find element attribute: //input[@id='findtext' and @name='findtext' and @type='text']@value
Насколько я пониаю, если аттрибут имеет пустое значение то для IDE для него просто не присваивается значение, тогда как для RC значение не находится и генерируется ошибка...

Вопрос: Как используя метод getAttribute() проверить, что атрибут имеет значение "пустая строка" и при этом не получить ошибку теста?
  • 0

#4 contestar

contestar

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

  • Members
  • Pip
  • 36 сообщений
  • ФИО:Алексей

Отправлено 22 октября 2010 - 11:13

String attValue = selenium.getAttribute(locator + "@value");

log.info("Value is: '" + attValue + "'");

assertEquals("", attValue);

  • 0

#5 frei_by

frei_by

    Постоянный участник

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 22 октября 2010 - 11:57

Т.е. вы предлагаете отавить PHP в покое и взятся за Java?

1. String attValue = selenium.getAttribute(locator + "@value"); // взять атрибут
2. log.info("Value is: '" + attValue + "'"); // записать в лог
3. assertEquals("", attValue); // сравнить с пустой строкой.


Так вот у меня пока что получается,
$value = $this->getAttribute('//input[@id=\'findtext\' and @name=\'findtext\' and @type=\'text\']@value');
- возварщает ошибку так как метод getAttribute вернул пустую строку и почему-то такой вариант считается что атрибут не найден:

ERROR: Could not find element attribute: //input[@id='findtext' and @name='findtext' and @type='text']@value

хотя если использовать подобный xpath в IDE,
то ошибки не возникает - а просто не присваивается переменная ${a2}
<td>storeAttribute</td>
        <td>//input[@id='findtext' and @name='findtext' and @type='text']@value</td>
        <td>a2</td>

Специально проверял действие getAttribute для этого-же элемента в случае, когда заполнен value- всё работает...
  • 0

#6 barancev

barancev

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

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


Отправлено 22 октября 2010 - 12:36

http://jira.openqa.org/browse/SRC-798
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 Jenka156

Jenka156

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

  • Members
  • PipPip
  • 137 сообщений
  • ФИО:Женя


Отправлено 11 августа 2011 - 10:26

,
  • 0


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

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