我有一个场景,其中有2下拉每个有一些值,然后有一个添加按钮。所以我们需要从一个下拉菜单中选择一个值,然后从另一个下拉菜单中选择一个值,然后单击添加按钮,然后再次从两个下拉菜单中选择另一个值。然而,当我选择1的值下拉然后它给我一个错误消息-
元素在
代码如下:
activityPage.activitiesTab.click()
browser.driver.sleep(2000);
activityPage.newActivity.click();
browser.driver.sleep(2000);
activityPage.entityDropdown.click();
browser.driver.sleep(2000);
activityPage.entitesList(function (items) {
for (var i = 1; i < items.length; ++i) {
items[i].click()
browser.driver.sleep(2000);
activityPage.activityDropdown.click()
activityPage.entitesList(function (activitiesName) {
for (var j = 1; j < activitiesName.length; ++j) {
activitiesName[j].click();
activityPage.activityDropdown.click()
browser.driver.sleep(2000);
activityPage.entityDropdown.click();
items[i].click()
}
});
}
});
问题是,像通常一样,protractor中的所有内容都是一个承诺,因此您不能简单地在for循环中调用东西。它基本上会立即运行所有循环,而不是等待任何async promise解析。
这里有一个很好的答案,解释得更彻底:https://stackoverflow.com/a/27910350/2374517