【问题标题】:How to access a stored value in PHPUnit_Extensions_SeleniumTestCase如何访问 PHPUnit_Extensions_SeleniumTestCase 中的存储值
【发布时间】:2011-09-07 07:50:59
【问题描述】:

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

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

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

如果我正确理解 Selenium API 文档,我可以使用 javascript{storedVars['foo']} 访问这些数据,并使用良好的老式 Selenese。它应该包含值"bar"

我的问题是:我怎样才能访问这个javascript{storedVars['test']} 表达式(或者,更一般地说,PHPUnit 中的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”。它只是返回表达式的名称,而不是它的值。

有这方面经验的人可以给我一些指导吗?

【问题讨论】:

    标签: selenium phpunit selenium-rc


    【解决方案1】:

    此线程中的好帖子,但目前看来还没有 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;
    

    为我做了诀窍。

    【讨论】:

    • 这完全符合我的预期。抱歉你没有早点回答,几周前我收到了 +50 的赏金!
    【解决方案2】:

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

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

    $this->getExpression('foo');
    

    【讨论】:

    • 也许我做错了什么。代码 sn-p 的评论有点太多了,所以我更新了我的问题。
    • 这行不通。 $foo = $this->getExpression('foo'); 只是将$foo 设置为等于"foo"。我还有什么需要做的吗?
    【解决方案3】:

    由于 Selenium 将表达式结果存储在第二个参数中,它将值存储在“bar”中,当您需要调用它时,您应该调用存储的名称来获取表达式。

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

    希望这对你有用。

    编辑:

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

    First Evaluated 将给出表达式的评估输出 第二个将显示表达的输出。 秒用于验证指定的表达式是否由警报生成。

    【讨论】:

    • 当我运行它时,$foo = $this->getExpression('bar'); 只是将$foo 设置为等于"bar"。事实上,$foo = $this->getExpression( "this is a test" ); 设置 $foo 等于 "this is a test"。我无法弄清楚我做错了什么。那个代码 sn-p 真的适合你吗?
    • 根据您对表达式求值的要求,答案已更新。看看有没有帮助
    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 2012-03-08
    • 2016-09-16
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多