Как получить доступ к сохраненному значению в расширениях 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". Это просто возвращает мне название выражения, а не его значение.
Может ли кто-нибудь, имеющий опыт в этом, дать мне некоторые рекомендации?
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;
Сделал это за меня.
Драйвер тестового набора PHPUnit Selenium на самом деле понимает storeExpression
и getExpression
; взгляните на его исходный код. Вы можете сделать
$this->storeExpression('foo', 'bar');
И
$this->getExpression('foo');
Поскольку Selenium сохраняет результат выражения во втором аргументе, он сохраняет значение в "строке", и когда вам нужно его вызвать, вы должны вызвать сохраненное имя, чтобы получить выражение.
$this->storeExpression( 'foo', 'bar' );
$foo = $this->getExpression("bar");
Пусть это поможет вам, это сработало для меня.
РЕДАКТИРОВАТЬ:
$evaluated = $this->getEval("regex:3+3");
$expressed = $this->getExpression("regex:3+3");
Первый оцененный результат выдаст оцененный результат для выражения , а второй покажет выраженный результат. Секундомер используется для проверки того, генерируется ли указанное выражение предупреждением или нет.