автоматизация тестирования selenium, IE11 не может получить доступ к элементу Rich text с помощью

#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()