问题:嗨,伙计们,我正在使用selenium c#测试CMS工具,但问题是为一个小的下拉按钮找到一个选择器,因为随机ID(所有选择器)。虽然它正在生成HTML代码,但我不能采取它的帮助,因为下次脚本运行时,它会改变id(类名和所有其他标识符)。
尝试:我尝试将页面上所有下拉按钮的xpath存储在数组中,下次单击元素的数组位置时,但它没有将任何元素xpath存储在数组中。
请建议我能做什么在这种情况下,可能是Java脚本启用页面的情况下。
元素代码:<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来加载页面源并选择节点,然后我就可以获得元素了。
我还禁用了页面的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;
}
希望对你有帮助。