using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using OpenQA.Selenium; using OpenQA.Selenium.Remote; namespace NpoComputer.SeleniumHelper.Extensions { public static class WebElementExtension { /// <summary> /// Поиск элемента с дополнительным Linq-фильтром /// </summary> /// <param name="driver"></param> /// <param name="by">Условие выборки списка элементов</param> /// <param name="predicate">Linq-фильтр</param> /// <returns>Первый элемент в результатах поиска с фильтрацией (если элемент существует)</returns> public static IWebElement FindElement(this IWebDriver driver, By by, Func<IWebElement, bool> predicate) { return driver.FindElements(by, predicate).First(); } /// <summary> /// Получение списка классов элемента /// </summary> /// <param name="element"></param> /// <returns>Список классов</returns> public static ReadOnlyCollection<string> ClassList(this IWebElement element) { ReadOnlyCollection<string> classList; try { char[] arraySeparators = { ' ', '\n', '\t' }; classList = element .GetAttribute("class") .Split(arraySeparators, StringSplitOptions.RemoveEmptyEntries) .ToReadOnlyCollection<string>(); } catch(Exception) { classList = new ReadOnlyCollection<string>(new List<string>()); } return classList; } public static void MouseMove(this IWebElement element) { RemoteWebElement webElement = element as RemoteWebElement; RemoteWebDriver webDriver = webElement.WrappedDriver as RemoteWebDriver; webDriver.Mouse.MouseMove(webElement.Coordinates); } public static void ContextClick(this IWebElement element) { RemoteWebElement webElement = element as RemoteWebElement; RemoteWebDriver webDriver = webElement.WrappedDriver as RemoteWebDriver; webDriver.Mouse.ContextClick(webElement.Coordinates); } } }
Вызов MouseMove для определённго элемента, реализующего IWebElement:
element.MouseMove(); //где element - объект IWebElement)