/// <summary> /// 태그 더블클릭 /// </summary> /// <param name="type"></param> /// <param name="selectText"></param> /// <returns></returns> public ResultModel <bool> DoubleClickTag(ElementsSelectType type, string selectText) { var result = new ResultModel <bool>(); try { var element = FindElement(type, selectText); if (element == null) { result.ResultValue = false; result.Err = $"다음과 일치하는 태그가 없습니다. [{selectText}]"; return(result); } element.Click(); var actions = new Actions(Driver); actions.DoubleClick(element).Perform(); result.ResultValue = true; } catch (Exception e) { result.ResultValue = false; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; } return(result); }
/// <summary> /// 선택자 객체 가져오기 /// </summary> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> public By GetBy(ElementsSelectType type, string name) { switch (type.ToString()) { case "ClassName": return(By.ClassName(name)); case "CssSelector": return(By.CssSelector(name)); case "Id": return(By.Id(name)); case "LinkText": return(By.LinkText(name)); case "Name": return(By.Name(name)); case "PartialLinkText": return(By.PartialLinkText(name)); case "TagName": return(By.TagName(name)); case "XPath": return(By.XPath(name)); default: return(null); } }
/// <summary> /// input에 텍스트 넣기 /// </summary> /// <param name="type"></param> /// <param name="selectText"></param> /// <param name="text"></param> /// <returns></returns> public ResultModel <bool> SetTextInputTag(ElementsSelectType type, string selectText, string text) { var result = new ResultModel <bool>(); try { if (string.IsNullOrEmpty(text)) { result.ResultValue = false; result.Err = "입력 값이 없습니다."; return(result); } var input = FindElement(type, selectText); if (input == null) { result.ResultValue = false; result.Err = $"다음과 일치하는 태그가 없습니다. [{selectText}]"; return(result); } input.Clear(); input.SendKeys(text); result.ResultValue = true; } catch (Exception e) { result.ResultValue = false; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; } return(result); }
// input에 텍스트 넣기 public string SetTextInputTag(ElementsSelectType type, string tagName, string text) { try { if (string.IsNullOrEmpty(text)) { return(string.Empty); } var input = FindElement(type, tagName); if (input == null) { return("null"); } input.Clear(); input.SendKeys(text); return(string.Empty); } catch (Exception e) { return(e.Message); } }
/// <summary> /// 단일 엘레멘트 가져오기 /// </summary> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> private IWebElement FindElement(ElementsSelectType type, string name) { try { var by = GetBy(type, name); var webElement = Driver.FindElement(by); return(webElement); } catch { return(null); } }
/// <summary> /// 멀티 엘레먼트 가져오기 /// </summary> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> private ReadOnlyCollection <IWebElement> FindElements(ElementsSelectType type, string name) { try { var by = GetBy(type, name); var webElements = Driver.FindElements(by); return(webElements); } catch { return(null); } }
// input value값 가져오기 public string GetValueInputTag(ElementsSelectType type, string tagName, out string inputValue) { try { var input = FindElement(type, tagName); inputValue = input.GetAttribute("value"); return(string.Empty); } catch (Exception e) { inputValue = string.Empty; return(e.Message); } }
// 태그의 text 값 가져오기 public string GetTagText(ElementsSelectType type, string tagName, out string tagText) { try { var tag = FindElement(type, tagName); tagText = tag.Text; return(string.Empty); } catch (Exception e) { tagText = string.Empty; return(e.Message); } }
/// <summary> /// 엘레멘트의 하위 싱글 엘레멘트 가져오기 /// </summary> /// <param name="element"></param> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> public IWebElement FindDefailElement(IWebElement element, ElementsSelectType type, string name) { try { Driver.WaitForAjax(); var by = GetBy(type, name); var webElement = element.FindElement(by); return(webElement); } catch { return(null); } }
/// <summary> /// 클릭 동작 수행 (버튼, 테이블, 태그 등) /// </summary> /// <param name="type"></param> /// <param name="selectText"></param> /// <returns></returns> public ResultModel <bool> ClickTag(ElementsSelectType type, string selectText) { var result = new ResultModel <bool>(); try { var element = FindElement(type, selectText); if (element == null) { result.ResultValue = false; result.Err = $"다음과 일치하는 태그가 없습니다. [{selectText}]"; return(result); } for (int i = 0; i <= 10; i++) { try { Thread.Sleep(200); element.Click(); } catch (Exception e) { if (i == 10) { result.ResultValue = false; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; return(result); } continue; } break; } result.ResultValue = true; } catch (Exception e) { result.ResultValue = false; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; } return(result); }
/// <summary> /// input value값 가져오기 /// </summary> /// <param name="type"></param> /// <param name="selectText"></param> /// <param name="inputValue"></param> /// <returns></returns> public ResultModel <string> GetValueInputTag(ElementsSelectType type, string selectText) { var result = new ResultModel <string>(); try { var input = FindElement(type, selectText); result.ResultValue = input.GetAttribute("value"); } catch (Exception e) { result.ResultValue = string.Empty; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; } return(result); }
/// <summary> /// 태그의 text 값 가져오기 /// </summary> /// <param name="type"></param> /// <param name="selectText"></param> /// <param name="tagText"></param> /// <returns></returns> public ResultModel <string> GetTagText(ElementsSelectType type, string selectText) { var result = new ResultModel <string>(); try { var tag = FindElement(type, selectText); result.ResultValue = tag.Text; } catch (Exception e) { result.ResultValue = string.Empty; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; } return(result); }
/// <summary> /// 사용할 태그가 있는지 확인 (다중 선택자 용) /// </summary> /// <param name="type"></param> /// <param name="selectText"></param> /// <returns></returns> public ResultModel <bool> ExistsElements(ElementsSelectType type, string selectText) { var result = new ResultModel <bool>(); try { var tags = FindElements(type, selectText); result.ResultValue = tags == null && tags.Count < 1 ? false : true; } catch (Exception e) { result.ResultValue = false; result.Err = $"오류가 발생하였습니다. : [{e.Message}]"; } return(result); }
// 클릭 (버튼, 테이블, 태그 등) public string ClickTag(ElementsSelectType type, string name) { try { var element = FindElement(type, name); if (element == null) { return("null"); } element.Click(); return(string.Empty); } catch (Exception e) { return(e.Message); } }
/// <summary> /// 엘레멘트의 하위 멀티 엘레멘트 가져오기 /// </summary> /// <param name="element"></param> /// <param name="type"></param> /// <param name="name"></param> /// <returns></returns> public ReadOnlyCollection <IWebElement> FindDefailElements(IWebElement element, ElementsSelectType type, string name) { try { Driver.WaitForAjax(); var by = GetBy(type, name); var webElements = element.FindElements(by); return(webElements); } catch { return(null); } }