rediffusion
11/9/2017 - 8:12 AM

MouseWheel()

//Ссылка на онлайн-документацию по объектной модели для всех версий ZennoPoster: //http://zennolab.com/wiki/en:zennoposter:macros-documentation

//Ссылка на онлайн-документацию по объектной модели версии 5.11.0.0: //https://help.zennolab.com/en/v5/zennoposter/5.11.0.0/

//public void MouseWheel
//Предназначение метода: Выполняет событие колёсика мыши в определённой точке внутри вкладки.

//Параметры:
//    int x - Координата x внутри области вкладки для вызова события прокрутки колёсика мыши.
//	int y - Координата y внутри области вкладки для вызова события прокрутки колёсика мыши.
//	double deltaX - Размер шага прокрутки в пикселах относительно оси x.
//	double deltaY - Размер шага прокрутки в пикселах относительно оси y.
//	bool considerScroll - true если необходимо учитывать текущую позицию прокрутки браузера; иначе false. Значение по умолчанию это false.

//Демонстрация:

Tab Tab1 = instance.ActiveTab;
Tab1.Navigate("https://ya.ru");
Tab1.WaitDownloading();

Tab1.FindElementByXPath("//div[starts-with(@class, 'search2')]/descendant::input", 0).SetValue("Проверка", "Middle");
Tab1.FindElementByXPath("//button[contains(@class, 'button_theme_websearch')]/span", 0).Click();
Tab1.WaitDownloading();

HtmlElement elFirstSearchResult = Tab1.FindElementByXPath("(//h2[starts-with(@class, 'organic__title')])[1]", 0);
HtmlElement elLastSearchResult = Tab1.FindElementByXPath("(//h2[starts-with(@class, 'organic__title')])[last()]", 0);

//Эмулируем "человекоподобную" работу с колёсиком мыши
int intCurrentYPosition = 0;
int intMaxWheelMovesLeft = 30;
Random rndGenerator = new Random();

while(true){
	int intCurrentMoveDistance = rndGenerator.Next(75, 205);
	
	int intTopPosition = elLastSearchResult.DisplacementInTabWindow.Y;
		
	if (intTopPosition>150){
		
		if (intCurrentMoveDistance>intTopPosition-150) intCurrentMoveDistance=intTopPosition-150; //уменьшаем шаг последней прокрутки, если он оказывается слишком большим
		
		Tab1.MouseWheel(0, intCurrentYPosition, 0, intCurrentMoveDistance, true);
		intCurrentYPosition+=intCurrentMoveDistance;
	}else{
		break;
	}
	if (--intMaxWheelMovesLeft==0) break;
	Thread.Sleep(50);
}

//Примечания:
//