Testing 如何在sfTestBrowser中模拟选择控件中的选择

Testing 如何在sfTestBrowser中模拟选择控件中的选择,testing,symfony1,functional-testing,Testing,Symfony1,Functional Testing,在symfony中的功能测试中,sfTestBrowser提供了一些方法 单击()“模拟单击链接或按钮。” 选择()“模拟选择复选框或单选按钮。” 和取消选择() 但我还没有找到一种方法来模拟从元素中进行选择 有人知道怎么做吗?这也困扰着我。我假设您只想设置表单提交的值?如果你知道这个值,你当然可以这么做 $browser->click('Save', array( 'theselectfield' => 'desired_value' )); 但通常我不知道要发布的值

在symfony中的功能测试中,sfTestBrowser提供了一些方法

  • 单击()“模拟单击链接或按钮。”
  • 选择()“模拟选择复选框或单选按钮。”
和取消选择()

但我还没有找到一种方法来模拟从元素中进行选择


有人知道怎么做吗?

这也困扰着我。我假设您只想设置表单提交的值?如果你知道这个值,你当然可以这么做

$browser->click('Save', array(
    'theselectfield' => 'desired_value'
));
但通常我不知道要发布的值,因为它来自数据库驱动的选择框。所以我的解决办法是

$theOption = $browser->getResponseDomCssSelector()->matchAll('select[name*=name_of_select_field] option:contains(TheOptionTextYouWant)')->getNode();

$browser->setField('theselectfield', $theOption->getAttribute('value'));
... or use $browser->click() instead ...

令人沮丧的是,为了使用GetResponseDomCSSelector(),您必须打破$browser调用链,但我没有找到更简单的方法。

谢谢。我曾经想过这样的事情,但是看起来很可怕,我不知道如何选择这个选项。如果这是我正在测试的转换,那么browser->click()将起作用(尽管计算出所有参数很痛苦)。