使用 Java 切换到框架

例如,如果 html 视图或元素的 html 源代码由 iframe 包装,如下所示:

<iframe src="../images/eightball.gif" name="imgboxName" id="imgboxId">
   <p>iframes example</p>
   <a href="../images/redball.gif" target="imgbox">Red Ball</a>
</iframe><br />

…然后,要对 iframe 的 web 元素执行任何操作,你必须首先使用以下任一方法将焦点切换到 iframe:

使用帧 ID (仅当你知道 iframe 的 ID 时才应使用)。

driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame

使用框架名称 (仅当你知道 iframe 的名称时才应使用)。

driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame

使用帧索引 (仅当你没有 iframe 的 id 或名称时才应使用),其中索引定义 iframe 在所有帧中的位置。

driver.switchTo().frame(0); //0 - Index of the frame

注意:如果页面中有三个帧,则第一帧将位于索引 0 处,第二帧位于索引 1 处,第三帧位于索引 2 处。

使用先前定位的 webelement (仅当你已经找到框架并将其作为 WebElement 返回时才应使用)。

driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame

所以,点击 Red Ball 锚点:

driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();