我正在尝试通过selenium webdriver(C#)
自动化使用角度JS开发的Web应用程序,并且我试图在角度UI网格中单击一个单元格,我尝试通过css选择器或xpath查找但是它没有&# 39; t帮助。
Css selector is generating dynamic ID - #\31 460691734316-0-uiGrid-00KQ-cell > div
Xpath is also dynamic //*[@id="1460691734316-0-uiGrid-00KQ-cell"]/div
我尝试使用
driver.FindElements(By.CssSelector("*[id^='1460'][id$='cell']"));
但它没有帮助
任何帮助都将受到高度赞赏。如果需要,我可以发送更多详细信息
答案 0 :(得分:1)
对于包含iframe的HTML页面和使用AnglularJS开发的特定问题,以下技巧为我节省了大量时间:在DOM中我清楚地看到有一个包含所有内容的iframe。所以遵循以下代码:
driver.switchTo().frame(0);
waitUntilVisibleByXPath("//h2[contains(text(), 'Creative chooser')]");
但它无法正常工作,并告诉我类似于"无法切换到框架。窗户关闭了#34;。然后我将代码修改为:
driver.switchTo().defaultContent();
driver.switchTo().frame(0);
waitUntilVisibleByXPath("//h2[contains(text(), 'Creative chooser')]");
此后一切顺利。显然,Angular会使用iframe来修改某些东西,当你希望驱动程序专注于默认内容时加载页面后,它会被一些已经被Angular框架删除的内容所关注。希望这可以帮助你们中的一些人。
答案 1 :(得分:0)
尝试使用Selenium IDE找到该元素,这是一个firefox插件?
在IDE中,您可以使用GUI
选择元素,轻松找到选择器答案 2 :(得分:0)
您可以使用其周围的元素,而不是通过其ID专门识别元素吗?这个单元格是否在一个表格中并处于一致的位置?是否有父元素,您可以更一致地选择并迭代C#程序中的子项,以确定您正在寻找的适当单元格?