- Регистрация
- 23.03.2021
- Сообщения
- 87
- Благодарностей
- 7
- Баллы
- 8
Всем привет
Не получается найти на мобилке элемент по xpath.
Ищу тут: https://www.wildberries.ru/catalog/0/search.aspx?search=скраб&page=1
Нужно найти товар "кокосовый скраб для тела" (синяя обложка у него), где -2см написано и скидка на него 77%
Сделал цикл, в котором или находит товар или переходит на следующую страницу:
Значение VendorCode - 20927158
Причем, самое интересное, когда на верстаке делаю такую конструкцию, находит без проблем, а в цикле не находит. Заходит на страницу, ждет нужное время и сразу уходит на след страницу
Не получается найти на мобилке элемент по xpath.
Ищу тут: https://www.wildberries.ru/catalog/0/search.aspx?search=скраб&page=1
Нужно найти товар "кокосовый скраб для тела" (синяя обложка у него), где -2см написано и скидка на него 77%
Сделал цикл, в котором или находит товар или переходит на следующую страницу:
C#:
while(true){
//MouseWheel2();
project.SendInfoToLog("Значение VendorCode - " + VendorCode,true);
System.Threading.Thread.Sleep(rnd.Next(500,1500));
//tab.FullEmulationMouseWheel(0,9000);
HtmlElement LoneProduct = instance.ActiveTab.FindElementByXPath(String.Format("//a[contains(@data-qa, 'catalog-product-card-image')]/div/div/div[contains(@style, '{0}')]|//div[contains(@style, '{0}')]", VendorCode), 0);
//tab.FullEmulationMouseMoveToHtmlElement(LoneProduct);
k++;
WZTableList.DeleteRow(k);
if(LoneProduct.IsVoid){
project.SendInfoToLog("Нашли свой товар на странице",true);
project.SendInfoToLog("VendorCode - " + VendorCode,true);
System.Threading.Thread.Sleep(3000);
if(Mobile){
tab.Touch.SwipeIntoView(LoneProduct);
tab.Touch.Touch(LoneProduct);
}else{
tab.FullEmulationMouseMoveToHtmlElement(LoneProduct);
tab.FullEmulationMouseClick("left","click");
}
tab.WaitDownloading();
System.Threading.Thread.Sleep(3000);
//Парсим название товара для отчета + id
HtmlElement ProductNameHtml = tab.FindElementByXPath("//div[contains(@class, 'brand-and-name j-product-title')]/span",0);
project.Variables["ProductName"].Value = ProductNameHtml.GetAttribute("innertext");
project.SendInfoToLog("Имя товара - " + project.Variables["ProductName"].Value,true);
HtmlElement ProductIdHtml = tab.FindElementByXPath("//div[contains(@class, 'article')]/span[contains(@data-link, 'selectedNomenclature')]",0);
project.Variables["ProductId"].Value = ProductIdHtml.GetAttribute("innertext");
project.SendInfoToLog("Id товара - " + project.Variables["ProductId"].Value,true);
//instance.WaitForUserAction(50);
//Действия с самим товаром
System.Threading.Thread.Sleep(3000);
//Лайк
HtmlElement LikePlace = tab.FindElementByXPath("//button[contains(@class, 'to-poned')]",0);
LikePlace.Click();
tab.WaitDownloading();
project.SendInfoToLog("Поставили лайк товару",true);
//В корзину
HtmlElement ToCart = tab.FindElementByXPath("//button[contains(text(), 'Добавить в корзину')]",0);
ToCart.Click();
tab.WaitDownloading();
project.SendInfoToLog("Добавили товар в корзину",true);
//Отзыв
// HtmlElement ReviewPlace = tab.FindElementByXPath("//label[contains(@class, 'new-post-add')]",0);
// ReviewPlace.Click();
// tab.WaitDownloading();
// string OrderStatus = WZTableList.GetCell("C", i);
// GoodsToWork.RemoveAt(0);
//GoodsToWork.Add(LoneName);
//Переход в корзину + заказ
System.Threading.Thread.Sleep(2000);
//WZTableList.ColSeparator = ";";
//WZTableList.AddRow(DateTime.Now + ";" + OrderName + ";" + VendorCode);
break;
}else{
int m = rnd.Next(1,2);
HtmlElement nextPage;
if(m==1){
nextPage = instance.ActiveTab.FindElementByXPath("//a[contains(@class, 'pagination-next')]|//div[contains(@class, 'swiper-slide Kirrv swiper-slide-next')]", 0);
}else{
nextPage = instance.ActiveTab.FindElementByXPath("//div[contains(text(), 'Показать ещё')]", 0);
}
project.SendWarningToLog("Не удалось найти товар на " + k + " странице. Переключаем дальше");
//nextPage = instance.ActiveTab.FindElementByXPath("//a[contains(@class, 'pagination-next')]|//div[contains(@class, 'swiper-slide Kirrv swiper-slide-next')]", 0);
//HtmlElement nextPage = instance.ActiveTab.FindElementByXPath("//a[contains(@class, 'pagination-next')]", 0);
if(Mobile){
tab.Touch.SwipeIntoView(nextPage);
tab.Touch.Touch(nextPage);
tab.WaitDownloading();
System.Threading.Thread.Sleep(rnd.Next(500,2300));
}else{
tab.FullEmulationMouseMoveToHtmlElement(nextPage);
tab.FullEmulationMouseClick("left","click");
tab.WaitDownloading();
System.Threading.Thread.Sleep(rnd.Next(500,2300));
}
//nextPage = instance.ActiveTab.FindElementByXPath("//a[contains(@class, 'pagination-next')]", 0);
if(nextPage.IsVoid) break;
nextPage.Click();
instance.ActiveTab.WaitDownloading();
}
}
Причем, самое интересное, когда на верстаке делаю такую конструкцию, находит без проблем, а в цикле не находит. Заходит на страницу, ждет нужное время и сразу уходит на след страницу
C#:
string VendorCode = "20927158";
//div[contains(@style, '20927158')]
//a[contains(@data-qa, 'catalog-product-card-image')]/div/div/div[contains(@style, '{0}')]
HtmlElement LoneProduct = tab.FindElementByXPath(String.Format("//div[contains(@style, '20927158')]", VendorCode), 0);
tab.FullEmulationMouseMoveToHtmlElement(LoneProduct);