Chcę kliknąć element po jego tekście, a nie według jego wartości z listy rozwijanej.AngularJS + kątomierz Jak wybrać opcję rozwijaną na podstawie jej tekstu nie wartości
znalazłem ten wielki post: https://coderwall.com/p/tjx5zg ale to nie działa zgodnie z oczekiwaniami, szukaj dalej zawsze po meczu został znaleziony i nie jest kliknięcie na element,
jeśli ktoś ma lepszy przykład (a pracuje jeden) lub możesz naprawić ten kod i sprawić, że zadziała,
będę apperciate.
Jest to kod Dan Haller od słupka używany (Wszelkie prawa zastrzeżone dla niego)
function selectOption(selector, item){
var selectList, desiredOption;
selectList = this.findElement(selector);
selectList.click();
selectList.findElements(protractor.By.tagName('option'))
.then(function findMatchingOption(options){
options.some(function(option){
option.getText().then(function doesOptionMatch(text){
if (item === text){
desiredOption = option;
return true;
}
});
});
})
.then(function clickOption(){
if (desiredOption){
desiredOption.click();
}
});
}
Jest to select function element, który można używać tak:
var browser = protractor.getInstance();
browser.selectOption = selectOption.bind(browser);
browser.selectOption(protractor.By.id('my-dropdown'), 'My Value');
Próbowałem też „protractor.By.xpath ('wybierz opcję [text() = "Opcja 2"]')) ; " i to nie zadziałało –
Generalnie używam 'sendKeys()', nie jestem pewien, czy jest to pożądane, czy nie. Na przykład, jeśli mam listę rozwijaną z listą nazw miast, użyłbym 'elem.sendKeys (desiredCityName)' i automatycznie wybierze odpowiednią opcję. – Aaron