У меня есть сайт электронной коммерции, на котором есть список продуктов, похожих на Amazon.я пытаюсь найти элемент и щелкнуть по нему.Я пробовал по фильтрам и карте, и оба не работают для меня.Пожалуйста, помогите.
Ниже приведен код для каждого продукта:
<b class="productNameHover pcursor word-break">product1</b>
<b class="productNameHover pcursor word-break">product2</b>
<b class="productNameHover pcursor word-break">product3</b>
<b class="productNameHover pcursor word-break">product4</b>
скажем, у меня есть 4 элемента на моей странице.Итак, я попытался получить счетчик, и он работает для меня.
var products = element.all (by.className ('productNameHover'));ожидайте (products.count ()). toBe (4);
когда я попробовал фильтр,
Решение A) не работает, нет сообщения об ошибке, но ничего не сделал
var products = element.all(by.className('productNameHover'));
products.filter(function(elem) {
return products.getText().then(function(text) {
return text === 'product4';
});
}).click();
browser.sleep(5000);
Решение B) не работает;индекс вне границ;Попытка получить доступ к элементу с индексом: 0, но есть только 0 элементов, соответствующих локатору
var products = element.all(by.className('productNameHover'));
products.filter(function(elem) {
return products.getText().then(function(text) {
return text === 'product4';
});
}).first().click();
browser.sleep(5000);
Soluction C) нет сообщения об ошибке, но ничего не сделал
var products = element.all(by.className('productNameHover'));
products.filter(function(elem) {
return products
.element(by.xpath(
"//div[@class='item text-center slide-image-content active']/img"
))
.getText()
.then(function(text) {
expect(text).toContain(product4);
})
.then(function(filteredElements) {
filteredElements.first().click();
});
});
browser.sleep(5000);
Решение D) Это работает и дает мне все продукты;но мне нужно либо щелкнуть по одному продукту, либо просмотреть
var products = element.all(by.className('productNameHover'));
products.map(function(item) {
return item.getText();
}).then(function(txt) {
console.log(txt);
//expect(txt).toContain("product 4")
});
Решение E) не работает и нет сообщения об ошибке
products.map(function(item) {
return item.getText();
}).then(function(txt) {
console.log(txt);
if( txt== 'product4') {
console.log(item);
item.click();
browser.sleep(5000);
}
});
РешениеF) Я пытался нажать на все элементы в цикле, но он щелкает по первому элементу, а не по второму;он дает Failed: ссылка на устаревший элемент: элемент не прикреплен к документу страницы.
products.map(function(item) {
browser.sleep(5000);
item.click();
browser.sleep(5000);
var backButton = element.all(by.className('btn btn-outline btn-big mt-3 ml-0 ml-sm-2')).first() ;
backButton.click();
browser.sleep(5000);
})