在 Selenium 中, sendKeys() 和 setValue() 方法究竟有何不同?
In Selenium how exactly are the sendKeys() and setValue() methods different?
我都用过
WebElement.sendKeys('')
和
WebElement.setValue('')
为了在字段中输入文本。绝大多数时间他们的行为似乎相同,但我发现了一些 setValue()
有效但 sendKeys()
无效的情况。
我在 Selenium 文档中只能找到 sendKeys()
'more accurately imitates user input' 然后是 setValue()
。有谁知道引擎盖下到底发生了什么?
发送密钥()
sendKeys()
is the Java method from WebElement 模拟输入元素,这可能会设置它的值。
定义:
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@whosebug.com");
然而 Java 中没有 setValue()
方法,最接近的匹配似乎是 setAttribute()
Java脚本方法。
setAttribute()
setAttribute()
是 JavaScript 方法,它设置指定元素的属性值。如果该属性已经存在,则更新该值;否则将添加具有指定名称和值的新属性。
语法:
Element.setAttribute(name, value);
示例:
HTML:
<button>Hello World</button>
Java脚本:
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')");
我都用过
WebElement.sendKeys('')
和
WebElement.setValue('')
为了在字段中输入文本。绝大多数时间他们的行为似乎相同,但我发现了一些 setValue()
有效但 sendKeys()
无效的情况。
我在 Selenium 文档中只能找到 sendKeys()
'more accurately imitates user input' 然后是 setValue()
。有谁知道引擎盖下到底发生了什么?
发送密钥()
sendKeys()
is the Java method from WebElement 模拟输入元素,这可能会设置它的值。
定义:
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@whosebug.com");
然而 Java 中没有 setValue()
方法,最接近的匹配似乎是 setAttribute()
Java脚本方法。
setAttribute()
setAttribute()
是 JavaScript 方法,它设置指定元素的属性值。如果该属性已经存在,则更新该值;否则将添加具有指定名称和值的新属性。
语法:
Element.setAttribute(name, value);
示例:
HTML:
<button>Hello World</button>
Java脚本:
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')");