selenium - 在 Selenium 中,sendKeys() 和 setValue() 方法究竟有何不同?
问题描述
我都用过
WebElement.sendKeys('')
和
WebElement.setValue('')
为了将文本输入到字段中。绝大多数情况下,它们的行为似乎相同,但我发现了一些setValue()
有效但sendKeys()
无效的情况。
我在 Selenium 文档中只能找到“更准确地sendKeys()
模仿用户输入”setValue()
。有谁知道引擎盖下到底发生了什么?
解决方案
发送键()
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()
方法,最接近的匹配似乎是JavaScript方法。setAttribute()
设置属性()
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')");
推荐阅读
- python - 如何在python中修改JSON
- javascript - 如何使用 D3 创建气泡树二进制图
- reactjs - Reactjs 使用带有嵌套路由的 Context Api 不共享状态
- amazon-web-services - AWS Aurora 集群的 Terraform 导入
- javascript - 是否可以即时切换画布 globalCompositeOperation?
- c++ - 如何在 OpenGL 2D 中设置垂直速度?
- javascript - JavaScript中具有任意长度格式规范的字符串到日期对象?
- laravel - 如何在我的本地计算机上从 Cpanel 运行 Laravel 下载的项目
- ios - 钱包通行证和推送通知
- angular - 如何使用 Angular 打开另一个组件而不显示第一个组件?