【问题标题】:Identifying elements in Iframe after content change using Selenium使用 Selenium 在内容更改后识别 iframe 中的元素
【发布时间】:2014-02-17 05:49:13
【问题描述】:

问题

我有一个包含表单的 iframe,一旦我提交表单,iframe 的内容就会根据信息更改为其他内容。因此,作为测试的一部分,我需要验证结果中的元素/文本

我做了什么

我使用 Switch().Frame 将数据提交到 iframe ,并使用“WebDriverWait”等待结果(我正在等待一个元素)

问题

提交后新元素没有被识别并且“等待元素”在超时后失败,即使结果屏幕视觉加载到 iframe(我也尝试增加超时,但没有运气)


我做错了吗?或者谁能​​给我建议?

非常感谢任何帮助

【问题讨论】:

  • 提交表单后内容是否在 iframe 中加载?如果是这样,您需要再次切换到该 iframe 以验证其中的内容。
  • 验证 driver.PageSource 并在提交表单后尝试识别您所在的框架/窗口。这样您就可以了解等待超时的原因。
  • 感谢 cmets,我在下面尝试了 Himansu 的回答,它成功了(切换回默认值,等待并再次切换到框架)

标签: c# iframe selenium selenium-webdriver


【解决方案1】:

我正在处理相同的场景,这适用于它,您可以尝试:

     driver.switchTo().frame(frameid);
       driver.findElement(By.cssSelector("input[name=\"login\"]")).click();//whatever you want to perform in frame.
      driver.switchTo().defaultContent();
       Thread.sleep(3000);
      driver.switchTo().frame(frameid);
      driver.findElement(By.cssSelector("input[name=\"login\"]")).getText();//Whar ever you want to perform.

如果您有任何疑问,请告诉我。 尽情享受吧!

【讨论】:

  • 我的快乐享受亲爱的:)
【解决方案2】:

我认为在提交后 - 元素现在已更改,该元素不在 iframe 中。

用途:

driver.switchTo().defaultContent();

并尝试识别元素。

我不太确定。不过你能不能试一试。

【讨论】:

  • 如果可能的话,您能否为我提供应用程序访问权限。
【解决方案3】:

是再次加载完整的表单还是只是您提供的一些文本/信息?

【讨论】:

  • 感谢您的评论,实际上整个内容都改变了,Himashu 的方法奏效了
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2017-02-02
  • 2015-01-12
相关资源
最近更新 更多