Size: a a a

2020 August 20

AA

Aleksei Avitsuk in JS for testing
`this.messageInput = Selector("*[class='public-DraftEditorPlaceholder-inner']")

 await t
           .typeText(this.messageInput, messageText, { replace: true })`
источник

AA

Aleksei Avitsuk in JS for testing
я так и думал. А если инпута нет вообще? Я проверил в DOM
источник

OK

Oleksandr Khotemskyi in JS for testing
Aleksei Avitsuk
я так и думал. А если инпута нет вообще? Я проверил в DOM
есть, возможно он появляется на клике, или что-то такое.
источник

VG

Vitalii Grygoruk in JS for testing
не всегда должен быть input, может быть div contenteditable=“true” (но это не тот случай скорее всего)
источник

AA

Aleksei Avitsuk in JS for testing
из доки:

t.typeText Method
Types the specified text into an input element.

это значит, что метод работает только с input?
источник

G

Genn in JS for testing
А можешь просто кликнуть по элементу и начать клацать (не лицом) буковки?
источник

R

Roman Mhoian in JS for testing
Покажи весь блок дерева этого елемента
источник

AA

Aleksei Avitsuk in JS for testing
Vitalii Grygoruk
не всегда должен быть input, может быть div contenteditable=“true” (но это не тот случай скорее всего)
Агонь! Есть такой элемент. Работает! От души! Бился несколько дней
источник

AA

Aleksei Avitsuk in JS for testing
Всем спасибо!
источник

M

Mike in JS for testing
Всем привет! Подскажите пожалуйста, возможно ли переносить значение переменной между классами?
Я выполняю следующую задачу: беру ключевые параметры товара(например, цену). Добавляю товар в корзину. Перехожу на страницу корзины и убеждаюсь, что добавил тот самый товар, что и хотелось.
Моя проблема в том, чтобы сделать ассерт на странице корзины, тк я не могу притащить с собой ожидаемое значение.

class GoodsPage {
   checkAlsoBuyWithProductItemsPrices() {
       const prices = this.alsoBuyWithProductItemsPricesCollection;

       let firstPrice = prices[0];

       const price = firstPrice.getAttribute("data-price");

       return price;

//цена товара. На его месте может быть любой элемент, который есть на странице карточки товара, но нет на странице корзины
   }
}
module.export = new GoodsPage();

=========================================================================================

const goodsPage = require("./goods.page");

class CartPage {
   checkGoodsPriceInCart() {
       console.log(goodsPage.checkAlsoBuyWithProductItemsPrices());
//ошибка Cannot read property 'getAttribute' of undefined. Проблема не в локаторе, он не может взять аттрибут потому что элемента нет на текущей странице. Моя проблема в том, что я не сохраняю значение таким способом. Я просто вызываю метод заново и он фейлится, тк я уже ушел дальше
его родной страницы.
   }
}
источник

OK

Oleksandr Khotemskyi in JS for testing
Mike
Всем привет! Подскажите пожалуйста, возможно ли переносить значение переменной между классами?
Я выполняю следующую задачу: беру ключевые параметры товара(например, цену). Добавляю товар в корзину. Перехожу на страницу корзины и убеждаюсь, что добавил тот самый товар, что и хотелось.
Моя проблема в том, чтобы сделать ассерт на странице корзины, тк я не могу притащить с собой ожидаемое значение.

class GoodsPage {
   checkAlsoBuyWithProductItemsPrices() {
       const prices = this.alsoBuyWithProductItemsPricesCollection;

       let firstPrice = prices[0];

       const price = firstPrice.getAttribute("data-price");

       return price;

//цена товара. На его месте может быть любой элемент, который есть на странице карточки товара, но нет на странице корзины
   }
}
module.export = new GoodsPage();

=========================================================================================

const goodsPage = require("./goods.page");

class CartPage {
   checkGoodsPriceInCart() {
       console.log(goodsPage.checkAlsoBuyWithProductItemsPrices());
//ошибка Cannot read property 'getAttribute' of undefined. Проблема не в локаторе, он не может взять аттрибут потому что элемента нет на текущей странице. Моя проблема в том, что я не сохраняю значение таким способом. Я просто вызываю метод заново и он фейлится, тк я уже ушел дальше
его родной страницы.
   }
}
просто не храни информацию со страницы в pageobject
источник

M

Mike in JS for testing
То есть мне нужно делать ассерт прямо в тесте? Или я не так понял?
источник

OK

Oleksandr Khotemskyi in JS for testing
const product = productPage.getProductDetails()
productPage.addToCart()
productPage.goToCart()

const productsInCart = cartPage.getProductsInCart()

источник

M

Mike in JS for testing
Ага, кажется понял, сейчас попробую, спасибо)
источник

M

Mike in JS for testing
Сработало)
Я ж правильно понял мысль? Сообщение ошибки напишу нормальное сейчас, тут чисто чтобы понять работает или не особо
источник

OK

Oleksandr Khotemskyi in JS for testing
Mike
Сработало)
Я ж правильно понял мысль? Сообщение ошибки напишу нормальное сейчас, тут чисто чтобы понять работает или не особо
только я бы переименовал метод checkGoodsTitleInCart() - если это check - то что он проверяет если он не получает параметр? А если это get, то почему переменная nameInCart ?
источник

OK

Oleksandr Khotemskyi in JS for testing
Mike
Сработало)
Я ж правильно понял мысль? Сообщение ошибки напишу нормальное сейчас, тут чисто чтобы понять работает или не особо
и checkAlsoBuyWithProductItemsNames - звучит очень страшно, разбей на несколько методов
источник

OK

Oleksandr Khotemskyi in JS for testing
типа проверить и купить? Или что это
источник

M

Mike in JS for testing
Да, переименую. Раньше это был чек, если бы я осилил перетаскивание переменной)
Он должен был взять значение из корзины, сравнить со старым

По страшному названию. Согласен, выглядит неприятно. Объясню: это покупака побочного товара в маленьком блоке. Мне пришлось придумать эти адские названия, чтобы не аффектить обычную покупку товара
источник

OK

Oleksandr Khotemskyi in JS for testing
Mike
Да, переименую. Раньше это был чек, если бы я осилил перетаскивание переменной)
Он должен был взять значение из корзины, сравнить со старым

По страшному названию. Согласен, выглядит неприятно. Объясню: это покупака побочного товара в маленьком блоке. Мне пришлось придумать эти адские названия, чтобы не аффектить обычную покупку товара
сделай дополнительный компонент тогда
goodsPage.relatedProducts.isVisible()
goodsPage.relatedProducts.length
goodsPage.relatedProducts[0].addToCart()

я бы что-то вроде такого делал
источник