Я использую JavaScript для моей структуры транспортира огурца. Сначала выполняется синхронный код, а асинхронный код работает в фоновом режиме.
проблеск моего кода:
When(/^I select the required "(.*?)" collection "(.*?)" from Select Collection Modal Window "(.*?)","(.*?)","(.*?)","(.*?)","(.*?)","(.*?)"$/,(collection_type,collection_name,level,tag,level1,tag1,level2,tag2)=>{
bid_config.click_Tag_Assignment();
bid_config.click_Select_Collections();
expect(bid_config.select_Collection_modal_window.isDisplayed()).to.be.eventually.true;
bid_config.Select_Collection(collection_type,collection_name);
//bid_config.Select_Bid_Collection(collection_name);
bid_config.get_Entity_type_Drop_down_Text('H9 - Commodity/Entity');
bid_config.AssignTags_to_WBS_Levels(level,tag,level1,tag1,level2,tag2);
})
Моя проблема - get_Entity_type_Drop_Down_text ()сначала выполняется, а функция select_Collections () обрабатывает в фоновом режиме код обеих функций:
Select_Collection(collection_type,name){
var Collection_names = [];
var Collection_type_names = [];
(async()=>{
var get_collections_count = await this.get_collections_count();
for(var i=0;i<get_collections_count;i++){
Collection_names[i] = await this.Get_Collection_name(i);
console.log("the collection name is "+Collection_names[i]);
Collection_type_names[i] = await this.get_Collections_type(i);
console.log("the collection type is "+ Collection_type_names[i]);
if((collection_type === Collection_type_names[i]) && (Collection_names[i] === name)){
var click_Checkbox = element.all(by.xpath("//*[@class='ReactVirtualized__Table__rowColumn list-body-cell '][1]//*[@class='csc-checkbox-element']")).get(i);
click_Checkbox.click();
var click_add_collection_arrow = element.all(by.xpath("//*[@class='separator transfer-block']//button[@class='btn btn-success btn-sm']")).get(0);
//helper.waitForbuttonElement(click_add_collection_arrow);
browser.actions().click(click_add_collection_arrow).perform();
//click_add_collection_arrow.click();
var OK = element(by.xpath("//button[@class='btn btn-success' and @type = 'button']"));
browser.actions().click(OK).perform();
return browser.sleep(1000);
//return OK.click();
}
}
})();
}
get_Entity_type_Drop_down_Text(req_level){
element(by.xpath("//button[@class='btn btn-link dropdown-toggle']")).getText().then((text)=>{
console.log(text);
if(text === 'Commodities'){
let clickexpandDetails = element(by.xpath("//*[text()='Expand Details']"));
//helper.waitForbuttonElement(clickexpandDetails);
clickexpandDetails.click();
//H9 - Commodity/Entity']
let xpath_level = "//*[@class='dropdown-menu']//li[text()='"+req_level+"']";
let select_level = element(by.xpath(xpath_level));
//helper.waitForbuttonElement(select_level);
return browser.actions().click(select_level).perform();
}
})
}
. Пожалуйста, дайте мне несколько советов, чтобы дождаться синхронного кода перед выполнением асинхронного кода