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

发布于 2024-11-08 02:32:56 字数 210 浏览 4 评论 0原文

在 symfony 的功能测试中,sfTestBrowser 提供了

  • click() 方法“模拟点击链接或按钮”。
  • select()“模拟选择复选框或单选按钮。”

并取消选择()。

但我还没有找到一种方法来模拟从

有人知道如何做到这一点吗?

In a functional test in symfony, sfTestBrowser provides methods

  • click() "Simulates a click on a link or button."
  • select() "Simulates selecting a checkbox or radiobutton."

and unselect().

But I have not found a way to simulate making a selection from a <select> element.

Does anybody know a way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谈下烟灰 2024-11-15 02:32:56

这也曾困扰过我。我假设您只想设置表单提交的值?如果您知道该值,您当然可以这样做,

$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 ...

令人沮丧的,因为你必须突破 $browser 调用链,才能使用 getResponseDomCssSelector(),但我还没有找到更简单的方法。

This has troubled me too. I'm assuming you just want to set the value for form submission? If you know the value, you can of course just do

$browser->click('Save', array(
    'theselectfield' => 'desired_value'
));

But usually I don't know the value I want posted, because it's from a database-driven select box. So my solution is

$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 ...

Frustrating because you have to break out of the $browser call chain, in order to use getResponseDomCssSelector(), but I haven't found an easier way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文