我有一个场景,我必须验证两件事: a)占位符文本 b)占位符文本在输入某些文本时消失。
我使用getAttribute完成了方案1("占位符");
对于方案b)即使在输入文本后我仍然被卡住,占位符值保持不变。 我甚至尝试过getText(),但在两种情况下它都显示为空值。
还有其他方法吗?
编辑:HTML 在输入文字之前:
<div class="pull-left"> <div class="form-group"> <input id="edit-search-block-form" class="form-control" type="text" name="keys" placeholder="How can we help you?"/>
它保持不变
</div> <button class="btn btn-primary" name="op" type="submit">Search</button> </div>
输入文字后
<div class="pull-left"> <div class="form-group"> <input id="edit-search-block-form" class="form-control" type="text" name="keys" placeholder="How can we help you?"/> </div> <button class="btn btn-primary" name="op" type="submit">Search</button> </div>
答案 0 :(得分:2)
我相信输入标记的属性,&#39;占位符&#39;即使在输入字段中输入文本后,HTML代码中的所有其他属性也将保持不变。您希望HTML代码如何动态更改,除非您正在进行AJAX调用或者在执行表单提交后重新加载页面。
&#34;值&#34;属性是一个改变的(虽然它不会反映在HTML代码中)。我认为getText返回空白,因为它确实不知道如何处理属性占位符
请尝试以下代码: -
WebElement input = driver.findElement(By.id("edit-search-block-form"));
System.out.println("placeholder-before : " + input.getAttribute("placeholder"));
System.out.println("value-before : " + input.getAttribute("value"));
input.sendKeys("New text goes here");
System.out.println("placeholder-after : " + input.getAttribute("placeholder"));
System.out.println("value-after : " + input.getAttribute("value"));
如果这有助于您,请告诉我。