Поиск элемента на странице по 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
 
конечно можно. ты можешь сам скролить на столько позиций, сколько надо. опрашивать границы элемента, делать проверки на выход за границы экрана, высчитывать на сколько надо передвинуть скролл.
все можно, но это не одна готовая строка кода от зеннолаба....
 
Во первых, смотри как это выглядит в постере, а не в мейкере, т.к. разрешения в мейкере могут не соответствовать реальным, и для тебя в мейкере это еще не видимый элемент, а в постере все ок.

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

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

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

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

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