Поиск…


Синтаксис

  • Джава
  • driver.switchTo (). frame (String name);
  • driver.switchTo (). frame (String id);
  • driver.switchTo (). frame (int index);
  • frame.switchTo (). frame (элемент WebElement frameElement);
  • . Driver.switchTo () defaultContent ();
  • C #
  • driver.SwitchTo (). Frame (int frameIndex);
  • driver.SwitchTo (). Frame (элемент интерфейса IWebElement);
  • driver.SwitchTo (). Frame (string frameName);
  • . Driver.SwitchTo () DefaultContent ();
  • питон
  • driver.switch_to_frame (nameOrId)
  • driver.switch_to.frame (nameOrId)
  • driver.switch_to_frame (индекс)
  • driver.switch_to.frame (индекс)
  • driver.switch_to_frame (frameElement)
  • driver.switch_to.frame (frameElement)
  • driver.switch_to_default_content ()
  • driver.switch_to.default_content ()
  • JavaScript
  • driver.switchTo (). рама (nameOrId)
  • driver.switchTo (). кадр (индекс)
  • driver.switchTo (). defaultContent ()

параметры

параметр подробности
nameOrId Выберите фрейм по имени.
индекс Выберите кадр по индексу на основе нуля.
frameElement Выберите фрейм, используя ранее расположенный WebElement

Чтобы переключиться на фрейм с помощью 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, вам нужно сначала переключить фокус на iframe, используя любой из следующих методов:

Использование идентификатора кадра (должно использоваться только в том случае, если вы знаете идентификатор iframe).

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

Использование имени фрейма (должно использоваться только в том случае, если вы знаете имя iframe).

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

Использование индекса кадра (следует использовать, только если у вас нет идентификатора или имени iframe), где индекс определяет позицию 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();

Чтобы выйти из фрейма с помощью Java

Чтобы переключить фокус на основной или первый кадр страницы. Вы должны использовать синтаксис ниже.

driver.switchTo().defaultContent();

Переключитесь на фрейм с помощью C #

1. Переключитесь на кадр по индексу.

Здесь мы переходим к индексу 1. Индекс относится к порядку кадров на странице. Это должно использоваться как последнее средство, поскольку идентификатор кадра или имена намного надежнее.

driver.SwitchTo().Frame(1);

2. Переключитесь на кадр по имени

driver.SwitchTo().Frame("Name_Of_Frame");

3. Переключитесь на кадр по заголовку, идентификатору или другим, передав IWebElement

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

driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));

Также обратите внимание, что если ваш фрейм занимает несколько секунд, вы можете использовать ожидание :

new WebDriverWait(driver, TimeSpan.FromSeconds(10))
    .Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));

Выйдите из рамки:

driver.SwitchTo().DefaultContent()

Чтобы выйти из рамки с помощью C #

Чтобы переключить фокус на основной или первый кадр страницы. Вы должны использовать синтаксис ниже.

. WebDriver.SwitchTo () DefaultContent ();

Переключение между дочерними рамками родительской рамки.

У вас есть родительская рамка (Frame-Parent). и 2 дочерних кадра (Frame_Son, Frame_Daughter). Давайте посмотрим на различные условия и способы их обработки.

1. От родителя к сыну или дочери:

 driver.switchTo().frame("Frame_Son");
 driver.switchTo().frame("Frame_Daughter");

2. От сыня к родительскому: если родительский фрейм по умолчанию, переключитесь на кадр по умолчанию, иначе от переключателя фрейма по умолчанию до родительского фрейма. Но вы не можете напрямую переключиться с сына на родителя.

driver.switchTo().defaultContent(); 
driver.switchTo().frame("Frame_Parent");

3. От сына дочери: если твоя сестра совершит какую-то ошибку, не кричите на нее, просто протяните руку своему родителю. Аналогично, вы даете управление родительскому кадру, а затем дочернему кадру.

driver.switchTo().defaultContent(); 
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");

Подождите, пока ваши кадры загрузятся

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

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

try{
        new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
                        ignoring(WebDriverException.class).
                        until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
    catch{

// выдает исключение только в том случае, если ваш фрейм не отображается с вашим временем ожидания 300 секунд}



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow