javascript - 使用selenium使用xpath输入多个元素

标签 javascript node.js selenium xpath selenium-webdriver

我是 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/

相关文章:

javascript - 当类应用于单独的元素时,如何更改元素?

PHP - 如果 URL 中有此内容,则不显示 div

javascript - 从 iframe javascript 将 Cookie 设置为父窗口

Node.js Socket 管道方法不会将最后一个数据包通过管道传输到 http 响应

python - 为什么 selenium webdriver Firefox 不适用于非特权用户?

python - 使用程序化 Web 浏览时无法使用检查元素访问输入字段

javascript - react 字体大小的 Material 表太小了

node.js - 如何从 Twilio 可编程语音功能中发送短信

javascript - Promise是一种实现异步编程的技术吗?

selenium - 在 Selenium 自动化中,鼠标箭头移动是否可以用于测试用例