【问题标题】:Is it possible to write a code which can give me the XPath for a particular element?是否可以编写可以为我提供特定元素的 XPath 的代码?
【发布时间】:2017-02-08 22:45:13
【问题描述】:

我关心的是是否可以仅通过选择一个元素来动态生成 XPath,这样我就不必担心任何网站的 HTML 文件中定期发生的更新。 随意留下任何可以替代此问题的想法,因为我不必每次都手动生成 XPath。

【问题讨论】:

    标签: java html css selenium selenium-webdriver


    【解决方案1】:

    是的,我正是针对这个问题编写了代码。

    我的情况是:我需要检查页面某处的元素,但 XPath 不时更改。由于所有元素都在一个表中,我只需要知道第一个元素的 XPath,然后每隔一行检查是否存在其他元素。

    我用过

            public void UserGetsXPathOfElement(string element){
            string PageSource = Driver.PageSource;
            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(PageSource);
    
            var decs = doc.DocumentNode.Descendants().ToList();
            var targetEl = decs.FirstOrDefault(c => c.InnerText.Trim() == element && c.Name == "td");
            var newXpath = targetEl.XPath;
    
            var regex = new Regex(@"tr\[\d+\]");
            newXpath = regex.Replace(newXpath, @"tr[{0}]");
    
            ScenarioContext.Current["xpath"] = newXpath;
        }
    

    仅在这段代码中,我在 ScenarioContext 中发送了一个变量 XPath var,并且我还将我的 xpath 修剪到了 td。你当然可以不考虑这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-14
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2021-07-22
      相关资源
      最近更新 更多