2

我正在使用 Electron 和 NodeJS 开发一个桌面应用程序,它具体是什么并不重要。我正在使用 spectron 测试我的电子应用程序。我已经实现了通过带有选项的下拉列表在不同保存的数据库之间进行选择的功能。在下拉列表中选择数据库时,将更新带有登录凭据的 json 文件以匹配所选数据库。我想编写一个测试来检查选择另一个选项时是否更改了 json 文件。我的主要问题是模拟从下拉菜单中选择另一个选项。

    // Psuedo code for what how I want to solve this
it("DB connection file is updated correctly", function() {
    read in json file with currently selected db credentials as a "before reference".
    simulate the selection of another db in the dropdown list so that json file from before is changed.
    read in changed json file
    assert.notDeepEqual(beforeFile, updatedFile);
});

我一直坚持的是我必须在下拉列表中选择另一个选项来更改当前数据库的部分。我已经阅读了 spectron 文档和 webdriverIO 文档,但我仍然无法让它工作。

下拉菜单中将始终列出 3 个默认数据库作为选项。我将在下面列出下拉列表的 html 代码:

                        <div id="list-container">
                        <form>
                            <label id="dropdown-label" for="connection-dropdown"><b>Database</b>:</label>
                            <fieldset id="dropdown-fset">
                                <select name="database" id="connection-dropdown">
                                </select>
                            </fieldset>
                        </form>
                    </div>

已经卡了一个多星期了,我也找不到任何在线解决问题的方法。很多问题如何使用 spectron 做事,但这次没有答案可以帮助我。我可能忘了提一些事情,所以请询问是否需要更多信息。

谢谢!

4

2 回答 2

0

我一直坚持的是我必须在下拉列表中选择另一个选项来更改当前数据库的部分

我在您的 HTML 中看不到任何实际的选项元素,但如果您将拥有这样的东西:

<select name="database" id="connection-dropdown">
    <option value="someValue0">uno</option>
    <option value="someValue1">dos</option>
    <option value="someValue2">tres</option>
    <option value="someValue3">cuatro</option>
    <option value="someValue4">cinco</option>
    <option value="someValue5">seis</option>
</select>

然后您可以应用几个选项命令之一。其中之一是selectByVisibleText()。该链接有一个很好的例子。将此设置放在 beforeAll() 中。

于 2018-10-19T02:17:55.463 回答
0

您可以收集元素,您可以在#list-container 下收集“选择”元素,然后您可以使用这些元素。

于 2018-09-26T14:11:42.960 回答