如何检查<input />元素中“value”属性的值?

时间:2017-09-12 04:40:22

标签: javascript jquery selenium

我有以下内容:

<h1>Request Group Rate</h1> 
    <form>
        <input type="hidden" name="referrer" id="bmn">
            Name: 
        <input type="text" id="fieldName" name="name"><br> Group size: 
        <input type="text" name="groupSize"><br> 
        Email: <input type="email" name="email"><br>
        <input type="submit" value="Submit">
    </form>
    <script>
        $(document).ready(function(){
            $('input[name="referrer"]').val(document.referrer);
            $(document.body).append('<div id="ready"></div>');
        });
    </script>

使用selenium导航到页面后:

    driver.findElement(By.id('requestGroupRate')).click();
    driver.sleep(100);
    driver.wait(function(){
        return driver.findElement(By.id('ready')).then(function(){
                            driver.sleep(1000);

           var element =  driver.findElement(By.id('bmn'));
            console.log(element.value);
            assert(element.value === referrer);
            done();
        });
    },5000);

我的断言失败了。由于某种原因,element.value未定义。这是为什么 ?我应该如何将输入字段中设置的值与id“bmn”进行比较呢?显然应设置该值,因为id为“ready”的div仅在设置值后才创建,因此如果驱动程序可以找到“ready”,则应设置输入字段的值..

我做错了什么?

2 个答案:

答案 0 :(得分:2)

var ele =  driver.findElement(By.id('bmn'));
ele.getAttribute('value').then(function(text){
  console.log('bmn value: ' + text);
  assert(text === 'change to your expected value');
});

答案 1 :(得分:1)

要获取属性的值,我们可以使用.getAttribute(&#39;属性名称&#39;)。

    driver.findElement(By.id('bmn')).getAttribute('value').then(function(attributeValue){
      console.log('bmn value: ' + attributeValue);
      assert(attributeValue=== 'expected value'); });