首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动感测试:如何使用css-选择器获取输入值

动感测试:如何使用css-选择器获取输入值
EN

Stack Overflow用户
提问于 2014-08-23 15:47:25
回答 2查看 524关注 0票数 3

我正在为Mojolicious编写一个测试,它发送一些HTML表单数据,然后检查它们是否出现在后续的get请求中。

代码语言:javascript
运行
复制
$t->post_ok('/intern/offer/edit'  => form  => {
      'angebotsdatum'    => '2014-02-22',
      'gastname'         => 'Hansi Hinterseer',
      'einmalkosten'     => '128.00',
      'tage'             => '9',
      'ankunft'          => '2014-01-01',
      'gesamtpreis'      => '764.00',
      'abfahrt'          => '2014-01-10',
      'tagespreis'       => '70.71',
      'apartments_id'    => 'HAG28',
      'id'               => '1',
      'aufenthaltspreis' => '636.39'
    }
)
->status_is(200)
->content_like( qr/Angbot bearbeiten/ )
;

$t->get_ok('/intern/offer/edit/1')
    ->status_is(200)
    ->text_like('html body h2' => qr/Intern - Angebote/ )
    ->text_like('html body h3' => qr/Angbot bearbeiten/ )
    ->text_is('html body form div#adatum label' => 'Angebotsdatum:' )
    ->text_is('html body form div#adatum input#angebotsdatum value'  => '2014-02-22' )
; 

不幸的是,对输入元素的值的最后一次测试失败了,因为返回的值总是空的。表单-标签(这里是'Angebotsdatum:')的测试成功了。

如何从HTML中选择并取回输入元素

表单的HTML代码是:

代码语言:javascript
运行
复制
<div id="adatum">
    <label>Angebotsdatum:</label>
    <input type="text" name="angebotsdatum" value="2014-02-22" id="angebotsdatum">
</div>

这是测试输出:

代码语言:javascript
运行
复制
#   Failed test 'exact match for selector "html body form div\#adatum input[name=angebotsdatum] value"'
#   at t/1210-workflow_booking.t line 80.
#          got: ''
#     expected: '2014-02-22'

因此我们可以清楚地看到,CSS-选择器返回空值

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-23 18:42:47

来自测试::Mojo

text_is --首先检查CSS选择器的文本内容,以匹配/XML元素,以便与Mojo::DOM中的完全匹配。

at方法

查找DOM结构中匹配CSS选择器的第一个元素,并将其作为Mojo::DOM对象返回,如果找不到,则返回undef。支持Mojo::DOM::CSS中" selectors“中的所有选择器。

代码语言:javascript
运行
复制
html body form div#adatum input#angebotsdatum value
                                             ^^^^^^ - this isn't valid

IMHO,不是有效的CSS选择器。

您可以尝试下一个(缩短)选择器:

代码语言:javascript
运行
复制
div#adatum > input[value="2014-02-22"]

因此,找到元素<input>,它的属性等于2014-02-22

Efoo=" bar“是一个E元素,其foo属性值与bar完全相等。

更多信息Mojo::DOM::CSS#SELECTORS

因此,这就足够用所需的值来检验元素的存在了:

代码语言:javascript
运行
复制
->element_exists('input[value="2014-02-22"]', '...');

Ps:我不是一个经验丰富的Mojo开发人员,所以.

票数 2
EN

Stack Overflow用户

发布于 2014-08-23 16:38:06

input#angebotsdatum意味着您正在寻找一个具有id=angebotsdatum属性的<input>元素,但是您想要查找的是一个name=angebotsdatum属性。所以我认为上一次的测试应该是

代码语言:javascript
运行
复制
->text_is('html body form div#adatum input[name=angebotsdatum] value' => ...)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25463669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档