Selenium webdriver C# - 无法在使用角度UI开发的网格中找到该元素

时间:2016-04-15 03:46:40

标签: c# angularjs selenium-webdriver

我正在尝试通过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']"));

但它没有帮助

任何帮助都将受到高度赞赏。如果需要,我可以发送更多详细信息

3 个答案:

答案 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#程序中的子项,以确定您正在寻找的适当单元格?