java - 是否可以编写一段代码来为我提供特定元素的 XPath?

标签 java html css selenium selenium-webdriver

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

最佳答案

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

我的情况是:我需要检查位于页面上某处的元素,但 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。当然,你可以不考虑这个。

关于java - 是否可以编写一段代码来为我提供特定元素的 XPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39790099/

相关文章:

java - 需要 java Regex 从特定字符串中删除/替换 XML 元素

javascript - 当用户在外部单击时隐藏搜索输入字段和搜索结果

jquery - 使 Stratus 2 Beta 使用网站 HTML 代码有困难

页面右侧的 HTML 导航栏

wordpress - WP 中的全屏背景图像幻灯片

java - Spring Security - 需要添加自定义cookie

java - PrimeFaces X Jelastic X p :fileUpload

java - 当我们使用 + 运算符连接时创建的新字符串对象在哪里

html - 将 select 和 Input 以及 Button HTML 元素对齐在一行中

css - 在导航菜单中设置下拉菜单的大小