【问题标题】:How to expedite switching between iFrames in Selenium Webdriver with Java code?如何使用 Java 代码加快 Selenium Webdriver 中 iFrame 之间的切换?
【发布时间】:2026-01-03 01:50:02
【问题描述】:

对于 Selenium WebDriver:我使用的是 Eclipse IDE 和 Java 代码

正在测试的应用程序:内置 C#

我的脚本需要在帧之间切换并执行一些操作。这需要经常进行。问题是每当执行切换语句时,脚本执行都会变得非常慢(大约延迟 20 秒)。框架层次结构如下:

1 个父框架:MainFrame
3 个子框架:左、中和右

任何一个开关的语句集看起来像:

driver.switchTo().defaultContent();
driver.switchTo().frame("mainFrame"); //switching to parent frame. This statement causes the delay
driver.switchTo().frame("left"); //switching to left frame

请建议是否有办法避免这种延迟。

【问题讨论】:

  • 您正在使用使用 C# 构建的 Java 应用程序?这意味着什么?你的代码在我看来像 Java。你的代码在我看来很好,你怎么知道是帧切换需要 20 秒?
  • 感谢杰夫指出。我更新了标题并添加了更多细节以使信息清晰。你是对的,我正在使用 Java 代码。我知道哪种方法可能会导致延迟,我将其缩小到使用调试和断点的语句。

标签: java c# selenium iframe selenium-webdriver


【解决方案1】:

您可以先将帧存储为元素变量,然后再切换到它。

这是一个例子:

var frameExample = driver.FindElement(By.className("myFrame"));
driver.switchTo().frame(frameExample);

因此,本质上,您将帧存储在元素变量中并在需要时进行切换,这将有助于解决性能问题。

【讨论】:

  • 感谢 Mystia!它就像一个魅力。所有的延迟都消失了。就这样。 :)
  • 在 C# 上,我收到了 frameElement cannot be converted to IWebElementReference
最近更新 更多