private string CheckXpathWithParent(WrappedElement elm) { bool flag = false; parnt = new List <string>(); string retdata = null; string xpath = ""; if (elm.Parent != null) { WrappedElement parent = new WrappedElement(driver, elm.Parent); if (parent.Attributes.Count > 0) { foreach (var p in parent.Attributes) { foreach (var item in single) { xpath = "/" + parent.Tag + "[@" + p.Key + "='" + p.Value.ToString() + "']" + item; if (!IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { parnt.Add(xpath); xpath = ""; } else { flag = true; break; } } if (flag) { break; } } foreach (var p in parent.Attributes) { foreach (var item in singletext) { xpath = "/" + parent.Tag + "[@" + p.Key + "='" + p.Value.ToString() + "']" + item; if (!IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { parnt.Add(xpath); xpath = ""; } else { flag = true; break; } } if (flag) { break; } } } else { foreach (var item in single) { xpath = "/" + parent.Tag + item; if (!IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { parnt.Add(xpath); xpath = ""; } else { break; } } foreach (var item in singletext) { xpath = "/" + parent.Tag + item; if (!IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { parnt.Add(xpath); xpath = ""; } else { break; } } } } if (!String.IsNullOrEmpty(xpath)) { xpath = "/" + xpath; } return(xpath); }
private string CheckXPathWithPrecedingSibling(WrappedElement elm) { bool flag = false; string retdata = null; string xpath = ""; if (elm.PrecedingSibling != null) { WrappedElement ps = new WrappedElement(driver, elm.FollowingSibling); if (ps.Attributes.Count > 0) { foreach (var p in ps.Attributes) { foreach (var item in elm.Attributes) { xpath = "/" + ps.Tag + "[@" + p.Key + "='" + p.Value.ToString() + "']" + "/following-sibling::" + elm.Tag + "[@" + item.Key + "='" + item.Value.ToString() + "']"; if (IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { flag = true; break; } else { xpath = ""; } } if (flag) { break; } } } else { foreach (var item in elm.Attributes) { xpath = "/" + ps.Tag + "/following-sibling::" + elm.Tag + "[@" + item.Key + "='" + item.Value.ToString() + "']"; if (IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { break; } else { xpath = ""; } } foreach (var item in elm.Attributes) { xpath = "/" + ps.Tag + "[text()='" + ps.Text + "']" + "/following-sibling::" + elm.Tag + "[@" + item.Key + "='" + item.Value.ToString() + "']"; if (IsUnique(LocatoryType.XPath, "", "/" + xpath, out retdata)) { break; } else { xpath = ""; } } } } return(xpath); }
public UniqueData CheckUniqueness(WrappedElement elm) { string retData = null; UniqueData ud = new UniqueData(); if (!String.IsNullOrEmpty(elm.Id) && IsUnique(LocatoryType.Id, elm.Tag, elm.Id, out retData)) { ud.type = "id"; ud.value = elm.Id; } else if (!String.IsNullOrEmpty(elm.Name) && IsUnique(LocatoryType.Name, elm.Tag, elm.Name, out retData)) { ud.type = "name"; ud.value = elm.Name; } else if (!String.IsNullOrEmpty(elm.ClassName) && IsUnique(LocatoryType.Class, elm.Tag, elm.ClassName, out retData)) { if (String.IsNullOrEmpty(retData)) { ud.type = "class"; ud.value = elm.ClassName; } else { ud.type = "xpath"; ud.value = retData; } } else if (!String.IsNullOrEmpty(elm.Text) && IsUnique(LocatoryType.Text, elm.Tag, elm.Text, out retData)) { if (String.IsNullOrEmpty(retData)) { ud.type = "text"; ud.value = elm.Text; } else { ud.type = "xpath"; ud.value = retData; } } else { string xp = CheckXpathWithSingleAttribute(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXpathWithSingleAttributeAndText(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXpathWithDoubleAttribute(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXpathWithDoubleAttributeAndText(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXpathWithParent(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXPathWithGrandParent(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXPathWithFollowingSibling(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { xp = CheckXPathWithPrecedingSibling(elm); if (!String.IsNullOrEmpty(xp)) { ud.type = "xpath"; ud.value = xp; } else { } } } } } } } } if (single != null) { if (single.Count > 0) { single.Clear(); } } if (singletext != null) { if (singletext.Count > 0) { singletext.Clear(); } } if (doub != null) { if (doub.Count > 0) { doub.Clear(); } } if (doubtext != null) { if (doubtext.Count > 0) { doub.Clear(); } } if (parnt != null) { if (parnt.Count > 0) { parnt.Clear(); } } } return(ud); }