如何找到随机 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;
}
希望对您有所帮助。
问题:大家好,我正在使用 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;
}
希望对您有所帮助。