首页 > 解决方案 > WebDriver.SwitchTo().Window() 和 WebDriver.SwitchTo().Frame() 有什么区别

问题描述

几天前,我需要让我的WebDriver(在这种情况下为 Chromedriver)在浏览器上的 2 个选项卡之间切换(其中一个已通过单击链接自动打开)。

我能够使用以下几行(C#)实现一个解决方案

var tabs = new List<String>(Driver.WindowHandles);
//Switches to the first tab
Driver.SwitchTo().Window(tabs[0]);

然而,我最近遇到了一些使用框架和警报的实现,这让我很困惑。

文档对我没有太大帮助,因为我仍然无法找出每个用例。

您能否告诉我FrameWindow之间的区别是什么(性能、可靠性、跨平台......)?

标签: c#seleniumselenium-webdriverwebdriverselenium-chromedriver

解决方案


框架 :

HTML中的标签。但是 HTML5 不支持该标签。

< frame > 标签定义了一个特定的窗口(frame<frameset>

通常,您一定在DOM中看到过iframe。它基本上是 HTML 页面的一部分。

此外,如果您想与框架内的任何元素进行交互,则必须切换到框架。

如何

SwitchTo().Frame(int frameIndex): 使用索引

SwitchTo().Frame(IWebElement frameElement) :使用之前定位的 OpenQA.Selenium.IWebElement 选择一个框架。

SwitchTo().Frame(string frameName):按名称选择框架。

窗户:

当您单击任何链接并打开一个新选项卡或一个新窗口本身打开时,这就是 Selenium 中的一个窗口。

如何:您已经在帖子中提到了这一点。

希望这会有所帮助。


推荐阅读