我都用过
WebElement.sendKeys('')
和
WebElement.setValue('')
为了将文本输入到字段中。绝大多数时间它们的行为似乎相同,但我发现了一些 setValue()
有效但 sendKeys()
无效的情况。
我在 Selenium 文档中只能找到 sendKeys()
“更准确地模仿用户输入”,然后是 setValue()
。有谁知道引擎盖下到底发生了什么?
最佳答案
发送 key ()
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')");
关于selenium - 在 Selenium 中, sendKeys() 和 setValue() 方法究竟有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54906911/