2016-03-03 2 views
0

Я пытаюсь проверить с помощью веб-драйвера, когда я нажимаю кнопку «Добавить в корзину», она меняется на другую кнопку «Удалить из Корзина». Все элементы на странице с добавить в корзину и удалить из корзины кнопок, имеют одинаковый код (который я считаю, Что действительно бросает меня)Как проверить, что кнопка изменилась с помощью selenium-webdriver (java)

<button> class="tg-button tg-button--large ng-binding tg-button--primary" ng-click="toggleDeviceToShoppingCart(deviceCatalogItem)" ng-class="{'tg-button--primary': !deviceIsInCart(deviceCatalogItem)}">Add to Cart</button> 

<button> class="tg-button tg-button--large ng-binding" ng-click="toggleDeviceToShoppingCart(deviceCatalogItem)" ng-class="{'tg-button--primary': !deviceIsInCart(deviceCatalogItem)}">Remove from Cart</button> 

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

ответ

0

Не совсем то же самое.

Первое решение: Add to Cart кнопка имеет атрибут класса, который Remove from Cart кнопка не имеет - tg-button--primary

WebElement button = driver.findElement(By.cssSelector(".tg-button.tg-button--large.ng-binding")); // get the button 
String classAttributes = button.getAttribute("class"); // get the class attribute 
if (classAttributes.contains("tg-button--primary")) { 
    // "Add to Cart" button 
} 
else { 
    // "Remove from Cart" button 
} 

Второе решение: текст кнопок отличается

WebElement button = driver.findElement(By.cssSelector(".tg-button.tg-button--large.ng-binding")); // get the button 
String text = button.getText(); // get the text 
if (text.contains("Add to Cart")) { 
    // "Add to Cart" button 
} 
else { 
    // "Remove from Cart" button 
} 
+0

Спасибо, Гай, второе решение сделало трюк для меня, единственное, что я добавил, это bool (before) и assert (after) для завершения мое задание. – Norstorin

0

Попробуйте:

findElement(by.cssSelector("Your selector here")) 
    .getAttribute("class") 
    .contains("tg-button--primary"); 

, если это правда, является первым делом на. Если false, это второе. Я надеюсь, что синтаксис прав, я только программирую в Selenium, используя C#

Смежные вопросы