예제 #1
0
        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);
        }
예제 #3
0
        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}'"));
        }
예제 #4
0
        public IPageFragment FindItemWithText(string text)
        {
            var xpathLiteral = XPathHelpers.ToXPathLiteral(text);
            var selector     = $"*[contains(string(), {xpathLiteral})]";

            return(GetPageFragmentByXPath(selector));
        }
예제 #5
0
        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}'"));
        }
예제 #6
0
        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));
        }
예제 #9
0
        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));
        }
예제 #10
0
        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));
        }
예제 #11
0
 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;
     }
 }