我有以下内容:
<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”,则应设置输入字段的值..
我做错了什么?
答案 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'); });