Поиск элемента на странице по XPATH (доработка метода)

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
Всем доброго здравия! Столкнулся с такой проблемой, есть сниппет C# для поиска элемента по XPATH на странице и скролл до него с эмуляцией мыши

Непосредственно сам сниппет:
//Находим элемент кнопки

var elButton = instance.ActiveTab.FindElementByXPath("//img[contains(@src, '"+project.Variables["article_opponent"].Value+"')]",0);
//Определяем, на каком расстоянии от верха страницы находится кнопка
int topInBrowser = int.Parse(elButton.GetAttribute("topInBrowser"));
//Делаем прокрутку на это расстояние
instance.ActiveTab.FullEmulationMouseWheel(0, topInBrowser);
//Ведём курсор мышки к кнопке
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(elButton);

//Кликаем
//instance.ActiveTab.FullEmulationMouseClick("left", "click");

// Установленная пауза
System.Threading.Thread.Sleep(2 * 1000);
Но бывает так, что он доскроллит до элемента, но сам элемент виден только наполовину (верхняя стрелка - наш элемент, нижняя кнопка, по которой эмуляция тача может ошибочно сработать).
88636



Сам вопрос заключается в том, возможно ли как то модифицировать сниппет, чтобы он выравнивал искомый элемент по центру видимой части? Чтобы тач ошибочно не кликал по другим кнопкам (картинка ниже как нужно, чтобы выравнивался элемент)
88637
 

Phoenix78

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

Spelin

Client
Регистрация
24.09.2019
Сообщения
446
Благодарностей
122
Баллы
43
Во первых, смотри как это выглядит в постере, а не в мейкере, т.к. разрешения в мейкере могут не соответствовать реальным, и для тебя в мейкере это еще не видимый элемент, а в постере все ок.

Вроде как стандартным кубиком скрола он выводит элемент полностью в видимый на экране.
 

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
Во первых, смотри как это выглядит в постере, а не в мейкере, т.к. разрешения в мейкере могут не соответствовать реальным, и для тебя в мейкере это еще не видимый элемент, а в постере все ок.

Вроде как стандартным кубиком скрола он выводит элемент полностью в видимый на экране.
А что в зенке есть стандартный кубик скрола? Если имеете ввиду свайп, то тут тоже не все гладко, он бывает тоже крашится и до нужного элемента не доходит, довольно не надежно получается, нужно какую то проверку делать, что мы дошли до нужного элемента на странице.
 

Spelin

Client
Регистрация
24.09.2019
Сообщения
446
Благодарностей
122
Баллы
43
А что в зенке есть стандартный кубик скрола? Если имеете ввиду свайп, то тут тоже не все гладко, он бывает тоже крашится и до нужного элемента не доходит, довольно не надежно получается, нужно какую то проверку делать, что мы дошли до нужного элемента на странице.
не знаю что там крашится я пользуюсь c# кодом свайпа в зависимости от требований. посмотри документацию и сделай под себя.
Если ты про скрол до элемента, то вроде тоже все видит.

Но как вариант - скроль не до этого элемента а до следующего в данной карточке. Ты же картинку в поиск забил? Поставь например заголовок и уже потом клик по картинке.
Либо вообще тупо добавь скролл на сколько то пикселей после скрола к элементу.
 
  • Спасибо
Реакции: Artur159

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
не знаю что там крашится я пользуюсь c# кодом свайпа в зависимости от требований. посмотри документацию и сделай под себя.
Если ты про скрол до элемента, то вроде тоже все видит.

Но как вариант - скроль не до этого элемента а до следующего в данной карточке. Ты же картинку в поиск забил? Поставь например заголовок и уже потом клик по картинке.
Либо вообще тупо добавь скролл на сколько то пикселей после скрола к элементу.
кстати, хорошая мысль по поводу тупо плюсануть сколько то пикселе поверх к поиску элемента, жаль, что я всегда оказываюсь впереди умных мыслей)
 

Dimon

Client
Регистрация
17.03.2010
Сообщения
63
Благодарностей
9
Баллы
8
кстати, хорошая мысль по поводу тупо плюсануть сколько то пикселе поверх к поиску элемента, жаль, что я всегда оказываюсь впереди умных мыслей)
не нашел решение как по центру выравнивать? в моем случае плюсануть сколько то пикселей не прокатывает, надо по центру выравнивать. на форуме только это нашел, int topOffsetToElementCenter , и то х.з. как это в код впихнуть
 

Artur159

Client
Регистрация
10.03.2020
Сообщения
52
Благодарностей
4
Баллы
8
не нашел решение как по центру выравнивать? в моем случае плюсануть сколько то пикселей не прокатывает, надо по центру выравнивать. на форуме только это нашел, int topOffsetToElementCenter , и то х.з. как это в код впихнуть
Нет, к сожалению, забросил, помогли мне с решением, но, к сожаление, иногда бывает так, что просто зацикливается скролл до элемента и он просто вверх-вниз скролит мимо элемента и так бывает и по полчаса скроллит, но потом нажмет на элемент, не знаю с чем это связано
 

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