Как получить доступ к сохраненному значению в расширениях PHPUnit SeleniumTestCase


Как я могу сохранить значение в Selenium-RC (через PHPUnit), а затем получить/получить доступ к нему позже с помощью PHPUnit?

Предположим, что я выполняю команду, подобную следующей, в тесте:

$this->storeExpression( "foo", "bar" );

Если я правильно понимаю документацию по API Selenium, я мог бы получить доступ к этим данным с помощью javascript{storedVars['foo']}, используя хороший старомодный Selenese. Он должен содержать значение "bar".

Мой вопрос таков: как я могу получить доступ к этому выражению javascript{storedVars['test']} (или, в более общем плане, javascript{storedVars} в PHPUnit?

Для пример, вот простой тест, который я провел:

public function testStorage()
{
    $this->open('http://www.google.com/'); // for example
    $this->storeExpression( 'foo', 'bar' );
    $foo = $this->getExpression('foo');
    echo $foo;
}

Выводом которого является "foo" (среди других стандартных выходных данных PHPUnit), в то время как я ожидаю, что это должно быть "bar". Это просто возвращает мне название выражения, а не его значение.

Может ли кто-нибудь, имеющий опыт в этом, дать мне некоторые рекомендации?

Author: Ryan, 2011-06-02

3 answers

Хорошие сообщения в этой теме, но, похоже, пока нет 100% рабочего ответа.

На основе ссылки на селен здесь

Http://release.seleniumhq.org/selenium-core/1.0/reference.html#storedVars

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

$this->storeExpression( 'bar', 'foo' );
$foo = $this->getExpression("\${foo}");

Я не проверял это точно, но делаю что-то подобное с

$this->storeHtmlSource('srcTxt');
$val = $this->getExpression('\${srcTxt}');
print $val;

Сделал это за меня.

 2
Author: David, 2011-07-19 23:03:34

Драйвер тестового набора PHPUnit Selenium на самом деле понимает storeExpression и getExpression; взгляните на его исходный код. Вы можете сделать

$this->storeExpression('foo', 'bar');

И

$this->getExpression('foo');
 1
Author: cweiske, 2011-06-03 11:17:11

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

    $this->storeExpression( 'foo', 'bar' );
    $foo = $this->getExpression("bar");

Пусть это поможет вам, это сработало для меня.

РЕДАКТИРОВАТЬ:

    $evaluated = $this->getEval("regex:3+3");
    $expressed = $this->getExpression("regex:3+3");

Первый оцененный результат выдаст оцененный результат для выражения , а второй покажет выраженный результат. Секундомер используется для проверки того, генерируется ли указанное выражение предупреждением или нет.

 0
Author: lAH2iV, 2011-06-27 14:41:00