如何找到随机 ID、XPATH 和 CSS 路径的选择器,在使用 Selenium c# 测试 CMS 工具时

How to find selector for a random ID, XPATH & CSSpath, I'm testing a CMS tool with Selenium c#

问题:大家好,我正在使用 selenium c# 测试 CMS 工具,但问题是由于随机 ID(所有选择器),要为一个微小的下拉按钮找到一个选择器。虽然它正在生成 HTML 代码,但我无法借助它,因为下次脚本运行时它会更改 ID(Class 名称和所有其他标识符)。

尝试过:我尝试将页面上所有下拉按钮的 Xpath 存储在一个数组中,下次单击元素的数组位置时,它没有将任何元素的 xpath 存储在数组中。

请建议我在这种情况下可以做什么,可能是 java 脚本启用页面的情况。

HTML 元素代码:

<span class="epi-extraIcon epi-pt-contextMenu epi-iconContextMenu" role="presentation" title="Display menu" data-dojo-attach-point="iconNodeMenu" _dijitmenuuniqname_51_43="1"/>

最近我在 C# 中使用了 selenium,遇到了一些类似的问题。

我的解决方案是使用 XPath。

我使用 firebug(在 Mozilla Firefox 上)检查了我需要的元素以获得 Xpath。

之后,我使用 HtmlAgilityPack nuget 加载页面源和 select 节点,然后我能够获取元素。

我还禁用了页面的 JQuery 动画以避免一些问题。

所以,我的 selection 节点代码是这样的:

var document = new HtmlDocument();

            document.LoadHtml(pageSource);

            var htmlLoaded = DocumentParsing(document.DocumentNode.SelectNodes(
                "/html/body/table[2]/tbody/tr/td/table[2]/tbody/tr/td[1]/font[2]/b[1] |" +
                "/html/body/table[2]/tbody/tr/td/table[2]/tbody/tr/td[1]/font[2]/b[2]));

我的禁用 JQuery 动画的代码:

 try
            {
                var js = DriverService as IJavaScriptExecutor;
                js.ExecuteScript("$.fx.off = !$.fx.off;");

                return true;
            }
            catch (Exception)
            {
                return false;
            }

希望对您有所帮助。