private string GetXmlXPath(bool includeIndexes) { var xel = XPathHelpers.GetXElementFromCursor(SourceXml.Document.Text, SourceXml.TextArea.Caret.Position.Line, SourceXml.TextArea.Caret.Position.Column); var xpath = XPathHelpers.GetAbsoluteXPath(xel, includeIndexes); return(xpath); }
public XPathHelpersTests() { _contextMock = new Mock <IHandlebars>(); _contextMock.SetupGet(c => c.Configuration).Returns(new HandlebarsConfiguration()); _sut = new XPathHelpers(_contextMock.Object); }
public static ByIndex FromItemText(string text) { var xpathLiteral = XPathHelpers.ToXPathLiteral(text.Trim()); var xpathToFind = $"*[contains(string(), {xpathLiteral})]"; return(new ByIndex(xpathToFind, $"containing partial text: '{text}'")); }
public IPageFragment FindItemWithText(string text) { var xpathLiteral = XPathHelpers.ToXPathLiteral(text); var selector = $"*[contains(string(), {xpathLiteral})]"; return(GetPageFragmentByXPath(selector)); }
public static ByText FromPartial(string text) { var xpathLiteral = XPathHelpers.ToXPathLiteral(text.Trim()); var xpathToFind = string.Format(".//*[contains(text(), {0}) or ((@type='submit' or @type='reset') and contains(@value,{0})) or contains(@title,{0})]", xpathLiteral); return(new ByText(xpathToFind, $"With partial text: '{text}'")); }
public static ByText From(string text) { var xpathLiteral = XPathHelpers.ToXPathLiteral(text.Trim()); var xpathToFind = string.Format(".//*[((normalize-space(.) = {0}) and (count(*)=0) ) or (normalize-space(text()) = {0}) or ((@type='submit' or @type='reset') and @value={0}) or (@title={0})]", xpathLiteral); return(new ByText(xpathToFind, $"With text: '{text}'")); }
public void TestGetAbsoluteXPath() { var xml = @" <breakfast_menu> <food> <calories>950</calories> </food> </breakfast_menu>"; Assert.AreEqual("/breakfast_menu/food", XPathHelpers.GetAbsoluteXPath(XPathHelpers.GetXElementFromCursor(xml, 3, 8), false)); }
public void GetAbsoluteXPathWithIndex() { var xml = @" <a test=""dada""> <bda> <c></c> <c></c> </bda> </a>"; Assert.AreEqual("bda", XPathHelpers.GetXElementFromCursor(xml, 4, 0).Name.LocalName); Assert.AreEqual("/a/bda[1]/c[1]", XPathHelpers.GetAbsoluteXPath(XPathHelpers.GetXElementFromCursor(xml, 5, 8), true)); }
public void TestMethod1() { var xml = @" <a test=""dada""> <bda> <c></c> </bda> </a>"; Assert.AreEqual("bda", XPathHelpers.GetXElementFromCursor(xml, 4, 0).Name.LocalName); Assert.AreEqual("c", XPathHelpers.GetXElementFromCursor(xml, 4, 8).Name.LocalName); Assert.AreEqual("/a/bda/c", XPathHelpers.GetAbsoluteXPath(XPathHelpers.GetXElementFromCursor(xml, 4, 8), false)); }
public IStableWebElement FindFieldElement(RemoteWebDriver driver, IWebElement form) { var labelTextLiteral = XPathHelpers.ToXPathLiteral(labelText.Trim()); var byLabelText = By.XPath($".//label[normalize-space(text()) = {labelTextLiteral}]"); var labelElement = driver.GetStableElementByInScope(form, byLabelText); var inputId = labelElement.GetAttribute("for"); if (string.IsNullOrWhiteSpace(inputId)) { throw new ArgumentException($"Label with text '{labelText}' has empty 'for' attribute"); } var byInputId = By.Id(inputId); return(driver.GetStableElementByInScope(form, byInputId)); }
public static IWebElement GetElementWithText(this RemoteWebDriver driver, ISearchContext scope, string linkText, bool isPartialText) { try { var xpathLiteral = XPathHelpers.ToXPathLiteral(linkText.Trim()); var by = isPartialText ? By.XPath(string.Format(".//*[contains(text(), {0}) or ((@type='submit' or @type='reset') and contains(@value,{0})) or contains(@title,{0})]", xpathLiteral)) : By.XPath(string.Format(".//*[((normalize-space(.) = {0}) and (count(*)=0) )or (normalize-space(text()) = {0}) or ((@type='submit' or @type='reset') and @value={0}) or (@title={0})]", xpathLiteral)); return(GetElementByInScope(driver, by, scope)); } catch (WebDriverTimeoutException ex) { if (ex.InnerException is NoSuchElementException) { var message = $"Cannot find element with text='{linkText}'"; throw new WebElementNotFoundException(message, ex); } throw; } }