Как получить доступ к сохраненному значению в PHPUnit_Extensions_SeleniumTestCase - PullRequest
4 голосов
/ 02 июня 2011

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

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

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

Если я правильно понимаю документацию Selenium API, я мог бы получить доступ к этим данным, используя 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". Он просто возвращает мне имя выражения, а не его значение.

Может ли кто-нибудь с опытом в этом дать мне некоторое руководство?

Ответы [ 3 ]

2 голосов
/ 20 июля 2011

Хорошие сообщения в этой теме, но пока не похоже на 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;

помог мне.

1 голос
/ 03 июня 2011

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

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

и

$this->getExpression('foo');
0 голосов
/ 21 июня 2011

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

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

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

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

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

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

...