Selenium: невозможно получить доступ к iframe и данным внутри него - PullRequest
4 голосов
/ 07 марта 2012

У меня есть такой HTML-код для iframe:

<iframe class="class1" prio="0" title="Details" type="detail" source="/something/somepage.aspx" style="display:none" frameborder="0"></iframe>

В этом фрейме есть меню, ввод текста и кнопки внутри, поскольку он открывает всплывающее окно на текущей странице.Popup получает свои данные со страницы источника, как указано выше.

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

Я пытаюсь ввести данные в форме в iframe, а затем вернуться на главную страницу, но ничего не понимаю.Пожалуйста, помогите!

Ответы [ 2 ]

13 голосов
/ 11 марта 2012

SwitchTo() метод принимает элемент index, name или frame, поэтому вы можете попробовать использовать элемент name или frame.

//find the frame by class/title/type/source
IWebElement detailFrame = driver.FindElement(By.XPath("//iframe[@class='class1']"));
driver.SwitchTo().Frame(detailFrame);

//alternatively, find the frame first, then use GetAttribute() to get frame name
IWebElement detailFrame = driver.FindElement(By.XPath("//iframe[@class='class1']"));
driver.SwitchTo().Frame(detailFrame.GetAttribute("name"));

//you are now in iframe "Details", then find the elements you want in the frame now
IWebElement foo = driver.FindElement(By.Id("foo"));
foo.Click();

//switch back to main frame
driver.SwitchTo().DefaultContent();
5 голосов
/ 08 марта 2012

Вы пробовали (код Java):

driver.switchTo().frame("iFrameName");

driver.findElement(By.id("formOne")).click();
driver.findElement(By.id("formOne")).sendKeys("abc");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...