我都用过
WebElement.sendKeys('')
和
WebElement.setValue('')
为了将文本输入字段。在绝大多数情况下,它们的行为似乎相同,但是我发现在某些情况下setValue()
有效,而sendKeys()
无效。
我在Selenium文档中可以找到的是sendKeys()
“更准确地模拟用户输入” ,然后是setValue()
。有人知道引擎盖下到底发生了什么吗?
答案 0 :(得分:1)
sendKeys()
是WebElement中的 Java 方法,用于模拟在元素中的键入,该元素可以设置其值。
定义:
void sendKeys(java.lang.CharSequence... keysToSend)
Use this method to simulate typing into an element, which may set its value.
Parameters:
keysToSend - character sequence to send to the element
Throws:
java.lang.IllegalArgumentException - if keysToSend is null
用法:
driver.findElement(By.id("identifierId")).sendKeys("C.Peck@stackoverflow.com");
但是 Java 中没有setValue()
方法,最接近的匹配似乎是setAttribute()
JavaScript 方法。
setAttribute()
是 JavaScript 方法,用于设置指定元素上的属性值。如果属性已经存在,则更新值;否则,将添加具有指定名称和值的新属性。
语法:
Element.setAttribute(name, value);
示例:
HTML:
<button>Hello World</button>
JavaScript:
var b = document.querySelector("button");
b.setAttribute("name", "helloButton");
b.setAttribute("disabled", "");
通过 Java executeScript()
实现:
((JavascriptExecutor)driver).executeScript("document.getElementById('elementID').setAttribute('attribute_name', 'new_value_for_element')");