如何在PHPUnit_Extensions_SeleniumTestCase中访问存储的值

时间:2011-06-02 19:03:54

标签: selenium phpunit selenium-rc

如何在Selenium-RC中存储一个值(通过PHPUnit),然后使用PHPUnit检索/访问它?

假设我在测试中运行如下命令:

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

如果我正确理解Selenium API文档,我可以使用javascript{storedVars['foo']}使用优秀的“老式Selenese”来访问此数据。它应包含值"bar"

我的问题是:如何在PHPUnit中访问此javascript{storedVars['test']}表达式(或者更常见的是javascript{storedVars}

例如,这是我运行的一个简单测试:

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 个答案:

答案 0 :(得分:2)

此主题中的帖子不错,但到目前为止看起来没有100%的回答。

基于Selenium参考

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 :(得分:1)

PHPUnit Selenium Testcase驱动程序实际上理解storeExpressiongetExpression;看看它的源代码。你可以做到

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

$this->getExpression('foo');

答案 2 :(得分:0)

由于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用于验证指定的表达式是否由警报生成。