Происходит Клик мимо кнопки

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
Всем доброго времени суток!

Требуется загрузить изображение на сервер. Подготавливаю фаил для загрузки (через снипет). надимаю UploadFile. Выскакивает модальное окно, там нахожу кнопку Upload. Говорю Нажать и ничего не происходит.
Пробовал разными способами.

1. Через готовые сниппеты зенопостера. поиск через Regexp, Xpath -> Click, Touch.
2. Через C#: Regexp, Xpath -> Click, Touch. (he.RiseEvent("click", instance.EmulationLevel);-)
3. Искал элемент брал координаты, делал клик и в итого клик делался в стороне от кнопки пикселей на 100 как по X так и по Y
пример запроса Xpath: //*[@id="image-selection-upload-device-container-id"]/div/div/span/button[starts-with(@class,'jsx')]/div[contains(@class,'button-1')]
При нажатии поиск выделяется нужный элемент!

Кто то сталкивался с таким?
Как еще можно ппроизвести Click?
 

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
Пока делал шаблон все отрабатывало как надо. Буквально несколько дней как перестало. Изменений в загрузки файла не делал
.
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 855
Баллы
113
Пока делал шаблон все отрабатывало как надо. Буквально несколько дней как перестало
Проверяйте пути xpath, возможно произошли изменения на сервере. Попробуйте другой путь xpath, возможно тот который нажимаете не кликабельный, т.е. клик происходит, но действия связанного с этим кликом нет. Посмотрите с сторону изучения верстки веб страниц и отображения элементов.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 914
Благодарностей
6 381
Баллы
113
//*[@id="image-selection-upload-device-container-id"]/div/div/span/button[starts-with(@class,'jsx')]/div[contains(@class,'button-1')]
ну, судя по пути, он составлен автоматом?
обычно автоматически составленные пути особо не работают.

дай ссылку на страницу с подробным описанием куда надо кликнуть, тебе быстро помогут, а так это просто гадания на кофейной гуще, тут нет экстрасенсов чтобы гадать
 

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
ну, судя по пути, он составлен автоматом?
обычно автоматически составленные пути особо не работают.

Писал сам. Брал из автоматического поиска, открывал размету и шел по элементам. C xpath знаком не долго. Пробовал отталкиваться от текста внутри кнопки "Upload from device". И потом возвращаться на два элемента нзад.

Так сразу до кнопки не добраться))))
Сайт https://www.gooten.com
Там что бы дойти до этой кноки нужно приступить к созданию Product Hub -> Add new product -> "Canvas Wraps" нажать SelectProduct -> Image Wrap ->Square -> 36x36 inch ->Continue with 1 SKU(s) -> Загружается страница и там с права Upload artwork -> И вот здесь то что нужно "Upload from device"
 

backoff

Client
Регистрация
20.04.2015
Сообщения
5 914
Благодарностей
6 381
Баллы
113
ну тогда лучше код страницы на которой кнопка
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
все хорошо написано, а главного не написал. как координаты получаешь с элемента ?
клик вообще кучей способов можно сделать. тебе на C# ?
 

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
все хорошо написано, а главного не написал. как координаты получаешь с элемента ?
клик вообще кучей способов можно сделать. тебе на C# ?

instance.SetFileUploadPolicy("ok", "");
string file = project.Variables["FullPathToImage"].Value;

instance.SetFilesForUpload(file);
project.SendInfoToLog(file,true);

var xpath_exp = "//*[@id='image-selection-upload-device-container-id']/span[@class='hidden-xs']/following-sibling::div/div/span/button";
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath_exp, 0);


int uLeft = Convert.ToInt32(he.GetAttribute("leftintab"))+20;
int uTop = Convert.ToInt32(he.GetAttribute("topintab"))+5;

instance.ActiveTab.Touch.Touch(he);
 

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
дай ссылку на страницу с подробным описанием куда надо кликнуть, тебе быстро помогут, а так это просто гадания на кофейной гуще, тут нет экстрасенсов чтобы гадать
HTML:
<div class="jsx-1329293133 cerulean-modal dropshadow-3 image-selection-upload-image upload-artwork"><div class="jsx-1329293133 modal-head d-flex heavy ml-4 title-2"><div title="Upload Artwork" class="jsx-1329293133 title-text">Upload Artwork</div></div><button type="button" class="jsx-2869776454 close-modal button-white medium  "><div class="jsx-2869776454 button-1"><span class="jsx-2869776454 height-setter">&nbsp;</span><svg width="24" height="24" viewBox="0 0 24 24" fill="inherit" xmlns="http://www.w3.org/2000/svg" class="jsx-728058690 "><path d="M17.5893 6.41076C17.9148 6.7362 17.9148 7.26384 17.5893 7.58928L7.58934 17.5893C7.2639 17.9147 6.73626 17.9147 6.41083 17.5893C6.08539 17.2638 6.08539 16.7362 6.41083 16.4108L16.4108 6.41076C16.7363 6.08533 17.2639 6.08533 17.5893 6.41076Z M6.41083 6.41076C6.73626 6.08533 7.2639 6.08533 7.58934 6.41076L17.5893 16.4108C17.9148 16.7362 17.9148 17.2638 17.5893 17.5893C17.2639 17.9147 16.7363 17.9147 16.4108 17.5893L6.41083 7.58928C6.08539 7.26384 6.08539 6.7362 6.41083 6.41076Z" fill="inherit" class="jsx-728058690"></path></svg></div></button><div class="jsx-1329293133 modal-bod"> <div class="pt-4 pr-4 pl-4"><div class="image-selection-upload-device flex-container UploadFromDevice__Container-dbiuo5-0 jysFnY" id="image-selection-upload-device-container-id"><div class="bcg-image"></div><span class="hidden-xs">Drag and drop images or</span><div><div style="overflow: hidden; display: block;"><span><button type="button" class="jsx-2289864036 button-cta large  upload-from-device"><div class="jsx-2289864036 button-1"><span class="jsx-2289864036 height-setter">&nbsp;</span>Upload from device</div></button></span></div><div style="overflow: hidden; display: block;"></div><input type="file" name="ajax_upload_file_input" style="display: none;" accept="image/jpeg,image/png" multiple=""></div><div class="filepicker dropzone">   </div></div><div class="image-selection-upload-url mt-3"><div class="text-input-with-button-container text-leftundefined"><div class="row pr-2 pl-2"><div class="col-xs-12 col-md-9 pl-1 pr-1"><div class="jsx-1163378255 input-container"><input id="Upload from Url" type="text" placeholder="Paste image URL" class="jsx-1163378255 undefined " value=""><label for="Upload from Url" class="jsx-1163378255 body-text-2 heavy">Upload from Url</label></div></div><div class="col-xs-12 col-md-3 pr-1 pl-1"><button type="button" class="jsx-2289864036 button-secondary extra-large full-width mb-3  upload-from-url"><div class="jsx-2289864036 button-1"><span class="jsx-2289864036 height-setter">&nbsp;</span>Upload from URL</div></button></div></div></div></div></div></div></div>
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
После обновления до 7.3.1.0 перестало работать?
 

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
Да, я на всякий случай после обновления. все удалил и поставил Zennoposter заново
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113

baracuda

Client
Регистрация
19.06.2013
Сообщения
733
Благодарностей
247
Баллы
43
URL есть у странички? угадывать что надо кликнуть если сейчас ошибка и голый HTML сложно и долго. гадание какое то выходит

с ходу только нечто такое выходит //div[contains(text(),’Upload from URL’]

Так более читабельнее:
<div class="jsx-1329293133 cerulean-modal dropshadow-3 image-selection-upload-image upload-artwork">
  <div class="jsx-1329293133 modal-head d-flex heavy ml-4 title-2">
    <div title="Upload Artwork" class="jsx-1329293133 title-text">Upload Artwork</div>
  </div>
  <button type="button" class="jsx-2869776454 close-modal button-white medium  ">
    <div class="jsx-2869776454 button-1"><span class="jsx-2869776454 height-setter">&nbsp;</span>
      <svg width="24" height="24" viewBox="0 0 24 24" fill="inherit" xmlns="http://www.w3.org/2000/svg" class="jsx-728058690 ">
        <path d="M17.5893 6.41076C17.9148 6.7362 17.9148 7.26384 17.5893 7.58928L7.58934 17.5893C7.2639 17.9147 6.73626 17.9147 6.41083 17.5893C6.08539 17.2638 6.08539 16.7362 6.41083 16.4108L16.4108 6.41076C16.7363 6.08533 17.2639 6.08533 17.5893 6.41076Z M6.41083 6.41076C6.73626 6.08533 7.2639 6.08533 7.58934 6.41076L17.5893 16.4108C17.9148 16.7362 17.9148 17.2638 17.5893 17.5893C17.2639 17.9147 16.7363 17.9147 16.4108 17.5893L6.41083 7.58928C6.08539 7.26384 6.08539 6.7362 6.41083 6.41076Z" fill="inherit" class="jsx-728058690"></path>
      </svg>
    </div>
  </button>
  <div class="jsx-1329293133 modal-bod">
    <div class="pt-4 pr-4 pl-4">
      <div class="image-selection-upload-device flex-container UploadFromDevice__Container-dbiuo5-0 jysFnY" id="image-selection-upload-device-container-id">
        <div class="bcg-image"></div><span class="hidden-xs">Drag and drop images or</span>
        <div>
          <div style="overflow: hidden; display: block;"><span>
<button type="button" class="jsx-2289864036 button-cta large  upload-from-device"><div class="jsx-2289864036 button-1">
<span class="jsx-2289864036 height-setter">&nbsp;</span>Upload from device</div>
          </button>
          </span>
        </div>
        <div style="overflow: hidden; display: block;"></div>
        <input type="file" name="ajax_upload_file_input" style="display: none;" accept="image/jpeg,image/png" multiple="">
      </div>
      <div class="filepicker dropzone"> </div>
    </div>
    <div class="image-selection-upload-url mt-3">
      <div class="text-input-with-button-container text-leftundefined">
        <div class="row pr-2 pl-2">
          <div class="col-xs-12 col-md-9 pl-1 pr-1">
            <div class="jsx-1163378255 input-container">
              <input id="Upload from Url" type="text" placeholder="Paste image URL" class="jsx-1163378255 undefined " value="">
              <label for="Upload from Url" class="jsx-1163378255 body-text-2 heavy">Upload from Url</label>
            </div>
          </div>
          <div class="col-xs-12 col-md-3 pr-1 pl-1">
            <button type="button" class="jsx-2289864036 button-secondary extra-large full-width mb-3  upload-from-url">
              <div class="jsx-2289864036 button-1"><span class="jsx-2289864036 height-setter">&nbsp;</span> Upload from URL </div>
            </button>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
</div>

Форматирование HTML
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
instance.SetFileUploadPolicy("ok", "");
string file = project.Variables["FullPathToImage"].Value;

instance.SetFilesForUpload(file);
project.SendInfoToLog(file,true);

var xpath_exp = "//*[@id='image-selection-upload-device-container-id']/span[@class='hidden-xs']/following-sibling::div/div/span/button";
HtmlElement he = instance.ActiveTab.FindElementByXPath(xpath_exp, 0);


int uLeft = Convert.ToInt32(he.GetAttribute("leftintab"))+20;
int uTop = Convert.ToInt32(he.GetAttribute("topintab"))+5;

instance.ActiveTab.Touch.Touch(he);
попробуй этот код. у тебя что то не понятное. получаешь координаты, а тап делаешь по элементу... а зачем тебе координаты ? :-)
C#:
HtmlElement he = instance.ActiveTab.FindElementByXPath(@"//*"", 0);
if (!he.IsVoid)
{
    Random rnd = new Random();
    int left = Convert.ToInt32(he.GetAttribute("leftInBrowser"));                 
    int top = Convert.ToInt32(he.GetAttribute("topInBrowser"));                     
    int Width = he.Width;                                                       
    int Height = he.Height;                                                   
    instance.Click(left,left+Width,top,top+Height,"Left","Random");
}
 

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
попробуй этот код. у тебя что то не понятное. получаешь координаты, а тап делаешь по элементу... а зачем тебе координаты ?
Я не первый день сижу, пробовал, разные варианты. здесь изначально координаты были закомментированы, оставил для себя что бы потом заново не писать. Код попробую, отпишусь
 
Последнее редактирование:

iZacNT

Пользователь
Регистрация
05.09.2020
Сообщения
35
Благодарностей
4
Баллы
8
попробуй этот код. у тебя что то не понятное. получаешь координаты, а тап делаешь по элементу... а зачем тебе координаты ? :-)
C#:
HtmlElement he = instance.ActiveTab.FindElementByXPath(@"//*"", 0);
if (!he.IsVoid)
{
    Random rnd = new Random();
    int left = Convert.ToInt32(he.GetAttribute("leftInBrowser"));               
    int top = Convert.ToInt32(he.GetAttribute("topInBrowser"));                   
    int Width = he.Width;                                                     
    int Height = he.Height;                                                 
    instance.Click(left,left+Width,top,top+Height,"Left","Random");
}


Спасибо огромное!!! Код работает. С моим xpath. Дело походу было в том что я уменьшил отображение страницы до 75%. Почему то предыдущая версия Zennoposter на это реагировала нормально. Простите дурака за то что отнял время!
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)