/// <summary> /// Скроллим фокус к объекту /// </summary> /// <param name="webItem">Объект к которому скроллим</param> public static void ScrollOnCoords(WebItem webItem) { try { Point hoverItem = BitrixFramework.FindWebElement(webItem).Location; ((IJavaScriptExecutor)BitrixFramework.WebDriver).ExecuteScript("return window.title;"); ((IJavaScriptExecutor)BitrixFramework.WebDriver).ExecuteScript("window.scrollBy(-10000,-10000);"); if (hoverItem.Y > 100) ((IJavaScriptExecutor)BitrixFramework.WebDriver).ExecuteScript("window.scrollBy(0," + (hoverItem.Y - 100) + ");"); else ((IJavaScriptExecutor)BitrixFramework.WebDriver).ExecuteScript("window.scrollBy(0," + (hoverItem.Y) + ");"); } catch (NoSuchElementException) { Log.MesError("Не найден объект \"" + webItem.description + "\" по пути \"" + webItem.by.ToString() + "\""); throw; } catch (Exception) { } }
/// <summary> /// Метод реализует поиск элемента на странице. Аналог WebDriver.FindElement /// </summary> /// <param name="webItem">"Объект страницы</param> /// <returns></returns> public static IWebElement FindWebElement(WebItem webItem) { if (webItem.by != null) { try { return WebDriver.FindElement(webItem.by); } catch (StaleElementReferenceException) { Wait(2); return WebDriver.FindElement(webItem.by); } catch (Exception) { return null; } } return null; }
/// <summary> /// Скроллим фокус к объекту /// </summary> /// <param name="webItem">Объект к которому скроллим</param> public static void Scroll(WebItem webItem) { try { ((IJavaScriptExecutor)BitrixFramework.WebDriver).ExecuteScript("arguments[0].scrollIntoView();", BitrixFramework.FindWebElement(webItem)); } catch (NoSuchElementException) { Log.MesError("Не найден объект \"" + webItem.description + "\" по пути \"" + webItem.by.ToString() + "\""); } catch (Exception) { } }
/// <summary> /// Метод реализует действие драгндроп от одного элемента до другого /// </summary> /// <param name="WebItemToDrop">Объект на котором дропаем первый объект</param> /// <param name="isAdmin">Признак админки</param> /// <param name="ScrollToObject">Скроллить ли до объекта</param> public void DragAndDrop(WebItem WebItemToDrop, bool isAdmin = false, bool ScrollToObject = true) { OpenQA.Selenium.Interactions.Actions builder = new OpenQA.Selenium.Interactions.Actions(BitrixFramework.WebDriver); builder.DragAndDrop(BitrixFramework.FindWebElement(this), BitrixFramework.FindWebElement(WebItemToDrop)).Build().Perform(); Log.MesNormal(String.Format("'{0}' -> Драгндроп до '{1}'", description, WebItemToDrop.description)); //проверяем страницу на наличие ошибок BitrixFramework.CheckJSErrors(); GM.CheckContentOnErrors(); }