【问题标题】:How to find selector for a random ID, XPATH & CSSpath, I'm testing a CMS tool with Selenium c#如何找到随机 ID、XPATH 和 CSS 路径的选择器,使用 Selenium c# 测试 CMS 工具
【发布时间】:2015-11-30 20:14:35
【问题描述】:

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

尝试过:我尝试将页面上所有下拉按钮的 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"/>

【问题讨论】:

  • HTML 代码:
  • 角色或职称属性稳定吗?如果是的话,你可以使用它们。
  • 嗨,杰夫,是的,这些属性是稳定的,但是有多个组件具有相同的属性。即使我找不到任何独特的组合。

标签: javascript c# selenium automation selenium-rc


【解决方案1】:

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

我的解决方案是使用 XPath。

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

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

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

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

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;
            }

希望对您有所帮助。

【讨论】:

  • 谢谢费尔南多,我会尝试解决方案并更新进度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2014-09-01
  • 2020-08-05
相关资源
最近更新 更多