#selenium #testng #internet-explorer-11
#selenium #testng #internet-explorer-11
Вопрос:
Я хочу получить доступ к редактору Rich text внутри iFrame. На странице есть четыре IFRAME, и я хочу получить доступ по элементу frame. Код выглядит следующим образом —
public static WebElement findRichTextEditorByIframeIndex(WebElement element) {
getDriver().switchTo().frame(element);
return getDriver().findElement(By.tagName("body"));
}
Обработайте, чтобы получить элемент iFrame, как показано ниже —
protected List<WebElement> getIFrameElement() {
return findElementsByLocatorTag(LocatorTag.IFRAME, "iframe");
}
Он отлично работает в Firefox, Chrome и Edge. Но IE11 не может оштрафовать элемент frame. Кроме того, он не может обработать тело внутри iFrame.
public static void enterTextInRichTextEditor(WebElement element, String text) {
try {
JavascriptExecutor jsExecutor = (JavascriptExecutor) getDriver();
jsExecutor.executeScript("arguments[0].innerHTML ='" text "'", element);
waitForLoad(1);
switchToDefaultContent();
} catch (InterruptedException ex) {
throw new RuntimeException(ex);
}
}
Дайте мне знать, как я могу получить доступ к элементу.
Спасибо.
Комментарии:
1. Что
element
означаетpublic static WebElement findRichTextEditorByIframeIndex(WebElement element)
?2. @DebanjanB Это
IFRAME
элемент, найденный с помощьюgetIFrameElement()
.3. @Rashed Но
protected List<WebElement> getIFrameElement()
возвращает список , как вы можете передать его какfindRichTextEditorByIframeIndex(WebElement element)
?4. Вы упоминаете, что на странице есть 4
IFRAME
элемента, но вы определяете их местоположение с помощью очень общего локатора, с помощью tagname = «iframe». Возможно ли, что в IE IFRAMEs разные… возможно, другой порядок и т.д. Когда вы говорите, что IE не может его найти, какую ошибку вы получаете? Я предполагаю, что он находит его … он просто не находит тот, который вы хотите.5. @DebanjanB Он, вероятно, передает
getIFrameElement().get(1)
(или какой бы ни был индекс предполагаемогоIFRAME
элемента) вfindRichTextEditorByIframeIndex()