【问题标题】:Can't iterate through multiple selector ($$, findElements) webdriver.io无法遍历多个选择器($$,findElements)webdriver.io
【发布时间】:2020-09-18 15:15:10
【问题描述】:

我正在尝试将 webdriver.io (https://webdriver.io/) 与 spectron 一起用于电子应用程序。

我能够访问 findElement 或 $ 包含的函数。例如,我可以在这个 findElement ($) 选择器上使用 .click()。

app.client.$('//button[@data-value, "Agree")]').click()

我的应用程序包含 4 个按钮,这些按钮的 data-value 属性为 Agree。这个 $ 选择器只会点击第一个。我的目标是遍历所有“同意”按钮并单击所有按钮。

我正在尝试这样做:

app.client.$$('//button[@data-value, "Agree")]').forEach(button => button.click())

但是,这就是说 forEach 函数不存在,就像 app.client.$$ 不返回数组一样,这与本文档所说的相反:https://webdriver.io/docs/api/browser/$$.html

如果我尝试解决 $$ 返回的承诺,请执行以下操作:

app.client.$$('//button[@data-value, "Agree")]').then(buttons => console.log(buttons))

我得到一个由 4 个按钮组成的数组,但只显示 ELEMENT 标识符、索引和元素对象 ID。它们不包括扩展原型以在它们上运行诸如 .click() 之类的命令。我也找不到使用 webdriver 查询特定 ELEMENT ID 的任何方法。

【问题讨论】:

    标签: javascript webdriver electron webdriver-io spectron


    【解决方案1】:

    请从 v4 升级到 v5,最好升级到 v6。

    干杯!

    【讨论】:

    • 我使用的是基于 webdriverIO 构建的electronjs.org/spectron。我正在使用spectron v10.0.0。除了升级 webdriverIO 还有其他选择吗?
    • WebdriverIO v5 和 v6 都支持 nodejs 10。
    • 您必须将每个 json 连线元素(按钮)转换为 v4 中的 WebdriverIO 对象。没有代码 sn-p atm。您需要这方面的帮助吗?
    • 是的,那太好了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2014-06-30
    • 2013-10-23
    • 2018-08-14
    • 2018-01-19
    相关资源
    最近更新 更多