В чем разница между WebDriver.SwitchTo (). Window () и WebDriver.SwitchTo (). Frame () - PullRequest
0 голосов
/ 17 мая 2018

Несколько дней назад у меня было требование, чтобы мой WebDriver (в данном случае Chromedriver) переключался между двумя вкладками в моем браузере (одна из которых была автоматически открыта при нажатии на ссылку).

Мне удалось реализовать решение, используя следующие строки ( C # )

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

Однако недавно я столкнулся с некоторыми реализациями, в которых используются фреймы и оповещения, что меня смутило.

Документация мне не очень помогла, так как у меня все еще есть проблемы с определением вариантов использования для каждого из них.

Подскажите, пожалуйста, в чем разница между Frame и Window для этой цели (производительность, надежность, кроссплатформенность, ...)?

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Рамка:

- это тег в HTML . Однако тег не поддерживается в HTML5.

Тег <<strong> frame > определяет одно конкретное окно ( frame ) в пределах <frameset>

Обычно вы должны были видеть Ифраме в DOM . Это в основном раздел HTML-страницы.

Более того, если вы хотите взаимодействовать с любым элементом, который находится внутри фрейма, вам придется переключиться на фрейм.

Как :

SwitchTo().Frame(int frameIndex): с использованием индекса

SwitchTo().Frame(IWebElement frameElement): выберите фрейм, используя ранее расположенный OpenQA.Selenium.IWebElement.

SwitchTo().Frame(string frameName): выберите кадр по имени.

Windows:

Когда вы нажимаете на любую ссылку и открывается новая вкладка или открываются новые окна, это окно в Selenium.

Как : Вы уже упоминали об этом в своем посте.

Надеюсь, это будет полезно.

0 голосов
/ 17 мая 2018

Объект Window

Объект Window * представляет открытое окно в браузере.

Если документ содержит фреймы (теги),браузер создает один оконный объект для HTML-документа и один дополнительный оконный объект для каждого содержащегося в нем фрейма.

Согласно *Команды 1017 * WebDriver выполняются в контексте текущего контекста просмотра или текущего контекста просмотра верхнего уровня .

Driver.SwitchTo (). Window (windowHandle)

Текущий контекст просмотра верхнего уровня представлен в протоколе связанным с ним дескриптором окна .Контекст просмотра верхнего уровня можно выбрать с помощью команды Switch To Window следующим образом:

Driver.SwitchTo().Window(windowHandle)

Driver.SwitchTo (). Frame (frameReference)

Аналогично, конкретный контекст просмотра можно выбрать с помощью команды Switch to Frame.

Driver.SwitchTo().Frame(driver.FindElement(By.XPath("//iframe[contains(@src,'<src_attribute_value>')]")));
0 голосов
/ 17 мая 2018

В Selenium, Window может быть другой вкладкой в ​​одном экземпляре браузера или другом экземпляре браузера. Контекст switch to window - это несколько страниц или экземпляр браузера.

Рамка внутри веб-страницы, поэтому контекст switch to frame представляет собой одну страницу, а не несколько страниц или экземпляров браузера.

...