使用selenium使用xpath输入多个元素
Use selenium to input multiple elements using xpath
我是Selenium的新手,所以我不确定这是否是解决问题的最佳方法,但我正在寻找一种方法来使用xpath(或css)来定位一系列输入元素,并以某种方式迭代所有元素并输入一些文本。
类似如下:
<form>
value1 <input type="text" placeholder="value1"><br>
value2 <input type="text" placeholder="value2"><br>
value3 <input type="text" placeholder="value3"><br>
</form>
我能找到元素使用这个:
var input = driver.findElement(By.xpath("//input[@type='text']"))
我可以输入xpath找到的元素的第一次出现:
input.sendKeys('Some text')
这就是我卡住的地方。我不确定如何在第一个输入字段后输入值。
最后,我想做的是以某种方式将文本发送到xpath过滤器定位的所有输入字段。我在想这可能是可能的for循环,但我不确定如何与webdriverjs使用的承诺管理器。
这是可能的还是有更好的方法来做到这一点?
您可以执行以下操作
driver.findElements(By.xpath("<xpath>")).then(function(elem) {
for(var i=0; i<elem.length; i++){
driver.findElements(By.xpath("<xpath>")).get(i).sendKeys('some Text');
}
});
只替换为您也要发送文本的元素的xpath。通常,您可以使用.get()从.findElements()
您应该尝试使用forEach
时,必须采取相同的行动,所有元素有共同的选择器如下:-
driver.findElements(By.css("input[type='text']")).then(function(elements) {
elements.forEach(function (input) {
input.sendKeys('Some text');
})
});
或者如果你想使用promise
做同样的事情,你需要参考Selenium的承诺,如下所示:-
var promise = require('selenium-webdriver').promise;
var elements = driver.findElements(By.css("input[type='text']"))
promise.all(elements).then(function (input) {
input.sendKeys('Some text');
});
我在这篇文章中得到了其他人的帮助。下面是工作代码:
driver.findElements(By.css("input[type='text']"))
.then(function (inputs) {
inputs.forEach(function (input) {
input.sendKeys(password)
})
})
相关文章:
- 使用元素的值与innerHTML
- 如何在模板聚合物中使用元素函数
- 选择不带选择器的元素,仅使用元素ID
- 聚合物:在不同的视图模型中多次使用元素
- Angular 指令似乎没有使用元素传入的选项执行
- JQueryHide()在按钮中使用元素时不会隐藏元素
- 如何使用元素's属性值,以针对jQuery中具有相同属性值的另一个元素
- 使用元素选择器向Object添加函数
- 如何在jquery的SWF对象插件中使用元素类名
- 在 jQuery 中使用元素属性的速记赋值
- SVG:<使用>元素嵌套在g中时不起作用(带小提琴!
- 如何在 motools 中使用元素方法变形或补间延迟或设置杜累
- 如何在 Javascript 中使用元素的 CSS 路径将 CSS 属性应用于元素
- 尝试使用元素ID访问对象值的本地javascript
- 我甚至可以在javascript中使用元素的名称吗
- 如何使用元素的id和getElementById在其他特定元素中获取元素
- 在 JavaScript 中使用元素作为哈希的键
- 如何在setInterval中使用元素中的值来设置间隔
- 为什么不在JavaScript中直接使用元素id作为标识符呢?
- 如何在javascript中初始化对象时使用元素名