0

I want to Click on the two Plus(+) button but the button is not having any text in Music Library SectionКак нажимать на кнопку без текста в Протрактор?

Как сделать то же самое?

Я попытался следующий код:

describe ('angularjs homepage', function() { 
    browser.get('http://angular.github.io/peepcode-tunes/public/'); 
    element(by.css('[ng-click="player.playlist.add(album)"]')).click(); 
}); 

К сожалению, это не работает. Пожалуйста, помогите

+0

по говоря «это не работает», вы имеете в виду, что никаких действий не было, или есть какие-то ошибки в консоли? вы уверены, что ваша кнопка была найдена, прежде чем нажимать на нее? – tratto

+0

Я дал ссылку на сайт. Вы можете попробовать и сообщить мне. Я не могу найти кнопку. @tratto –

ответ

0

Лучше использовать protractor.ExpectedConditions ждать, пока элемент станет кликабельным, а затем нажмите операцию.

Код сниппета:

EC = protractor.ExpectedConditions; 

describe ('angularjs homepage', function() { 

it('test case name',function(){ 

browser.ignoreSynchronization=true; 

var twoButtons=element.all(by.css('.queue.add')); 
browser.get('http://angular.github.io/peepcode-tunes/public/'); 

/*It will click first button, chance get(1) for second button*/  
browser.wait(EC.elementToBeClickable(twoButtons.get(0)), 
              8000).thenCatch(function() { 
         assert.fail(' element is not click able'); 
       }); 
twoButtons.get(0).click(); 
}); 
}); 
+0

Не работает @Suresh –

+0

Локатор может быть неправильным, поделитесь с ним HTML-кодом, связанным с этой кнопкой. и если не работает, приложите сообщение об ошибке, которое поможет нам предсказать, что может вызвать вопрос. –

+0

Я прикрепил сайт. Вы можете увидеть его с помощью элемента проверки? –

2

Вы не можете нажимать на них, потому что оба они имеют & атрибуты одного класса. В этих случаях у вас есть 2 варианта:

1) Вы можете напрямую использовать концепцию CSS nth child.

describe ('angularjs homepage', function() { 
browser.get('http://angular.github.io/peepcode-tunes/public/'); 
element(by.css('#container > section > ul > li:nth-child(1) > button')).click(); // it will click the first "+" button 
element(by.css('#container > section > ul > li:nth-child(2) > button')).click(); // it will click the second "+" button 
}); 

2) Вы можете получить доступ к ним с индексом, как @noor предложил в ответе выше:

describe ('angularjs homepage', function() { 
browser.get('http://angular.github.io/peepcode-tunes/public/'); 
element.all(by.css('.queue.add')).get(0).click(); // it will click the first "+" button 
element.all(by.css('.queue.add')).get(1).click(); // it will click the second "+" button 
}); 

Я проверил его, и оба они работают! дайте мне знать, если вы столкнетесь с проблемами!

+0

Неудачи: 1) angularjs домашней страница столкнулась декларация об исключении сообщения: TypeError : element (...). get не является функцией Стек: ТипError: element (...). get не является функцией в Suite. (D: \ Protractor \ git.js: 3: 32) у объекта. (D: \ Protractor \ git.js: 1: 1) в Module._compile (module.js: 413: 34) в Object.Module._extensions..js (module.js: 422: 10) at Module.load (module.js: 357: 32) на Function.Module._load (module.js: 314: 12) на Module.require (module.js: 367: 17) –

+0

1 спецификация, 1 сбой Закончено в 0,03 секунды C: \ Users \ kipatel \ AppData \ Roaming \ NPM \ node_modules \ транспортира \ node_modules \ селеном WebDriver \ Lib \ про mise.js: 1329 возвращение callbackFn (this.value_); ^ Ошибка: Angular не найдено на странице http://www.angular.github.io/peepcode-tunes/public/: angu lar никогда не предоставлял resumeBootstrap на –

+0

Я получил эту ошибку при запуске вашего вышеуказанного кода. –

0

Я проверил это в java, хотя и не помечаю java здесь. надеюсь, что вы можете преобразовать код ur в js.

в Java, чтобы нажать на первый +, используйте ниже:

driver.findElements(By.cssSelector(".queue.add")).get(0).click(); 

для второго +:

driver.findElements(By.cssSelector(".queue.add")).get(1).click(); 

так, я думаю, что если и использовать приведенный ниже код для JS, это работа:

element(by.css('.queue.add')).click(); 

если есть способ в JS взять элементы, сначала взять элементы и чем мыши с использованием элемента индекс.

+0

noor, я работал над селеном за последние 1 год. Я сделал то же самое в селене. Но я хочу его в транспортир. элемент (by.css() 'queue.add.') нажмите(). не работает, я попробовал это раньше. –

0

Проверьте API Protractor API. Убедитесь, что у вас установлена ​​последняя версия. Вы можете захватить плюсы несколькими способами. Один из способов будет использовать webdriver.By.css

Try:

browser.findElement(by.css('.queue')).click(); 

Вы также можете добавить идентификатор знаком плюс и захватить его, что путь, используя webdriver.By.id