无法访问IE中框架内的元素,但在Chrome和FireFox中工作正常

时间:2013-12-16 15:54:18

标签: c# internet-explorer selenium frame

我正在使用Selenium webdriver来自动化具有多个框架的Web应用程序。

当我在IE中运行我的脚本时,框架内的元素没有被识别,并且我得到一个例外“无法找到带有链接文本的元素==测试”。但这在Chrome和Firefox中完美运行。

我经历了许多相关的讨论,并尝试了以下的工作,但他们提供了帮助。

  • 在切换帧之前和之后插入等待语句。
  • 已禁用IE的代理设置。 修改IE设置以显示安全和非安全内容
  • 选中“允许活动内容在我的计算机上的文件中运行”复选框下的互联网选项 - >高级 - > IE设置中的安全性。

我用,

Selenium webdriver版本2.35.0.0 IE版:7 编程语言:c#

注意:

  • 应用程序具有动态名称和帧ID,因此我使用了索引来切换帧。

我尝试将在Chrome和IE中打开的应用程序保存为html页面。当我使用浏览器打开保存的html页面时,

  • 从chrome保存的那个显示框架内的所有元素。

  • 从IE保存的那个没有在框架内显示任何元素。

如果我得到一个处理框架内元素的解决方案,那就太好了。

我无法提供完整的HTML代码,但已附上了部分HTML代码的屏幕截图。

我尝试使用Chrome和IE保存完整的html页面。我确实观察到它们的不同。

这是从chrome保存的html代码的快照。在这里,我看到“< div class =”mocha “除法,它有框架。

enter image description here

这是从IE保存的html代码的快照。在这里,我看不到“< div class =”mocha “除以及”< iframe> “。

enter image description here

我怀疑,如果这可能是问题的原因。如果我必须提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

实际问题是,由于某种原因,使用Index识别帧在IE中无法正常工作。这似乎是与IE浏览器的应用程序行为相关的问题。因此,我们提出了以下解决方案来克服这个问题。

步骤: 1.获取页面中的所有帧(使用其类)作为列表。 2.遍历列表以获取数组中每个帧的名称。 3.然后使用保存在数组中的帧名称切换到相应的帧。