我是 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 使用的 promise 管理器来做到这一点。
这可能吗,或者有更好的方法吗?
最佳答案
您可以执行以下操作
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() 返回的元素列表中选择特定元素
关于javascript - 使用selenium使用xpath输入多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40137923/