Selenium Webdriver не интерпретирует разметку как браузер, я не могу загрузить все элементы HTML в DOM, как браузер - PullRequest
0 голосов
/ 27 мая 2019

Я хотел бы автоматизировать процесс аутентификации в https://appleid.apple.com/, используя java webdriver selenium, но HTML-элементы формы не загружаются в DOM

, насколько мне известно, веб-драйвер Selenium интерпретируетразметка, как в браузере.И он применяет стили CSS, запускает JavaScript и динамически отображаемый контент добавляется в DOM

  • Почему элементы HTML не загружаются в DOM?

  • Как я могу продолжить, чтобы исправить это и загрузить все элементы в DOM, точно так же, как браузер?

Примечание: https://appleid.apple.com/ сайт использует Mustache.JS(без логического шаблона)

 public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200", "--ignore-certificate-errors");
    WebDriver driver = new ChromeDriver(options);
    driver.get("https://appleid.apple.com/");
    waitForPageLoadComplete(driver, 30);
    //can't found input name element
    WebElement inputName = driver.findElement(By.id("account_name_text_field"));
    System.out.println(driver.getPageSource());
}

1 Ответ

3 голосов
/ 27 мая 2019

Элемент, который вы пытаетесь найти, находится внутри iFrame. Сначала вам нужно переключиться на этот iFrame, а затем приступить к поиску элемента, который у вас уже есть.

driver.switchTo().frame("aid-auth-widget-iFrame");

WebElement inputName = driver.findElement(By.id("account_name_text_field"));

Дополнительную информацию о переходе на iFrames можно найти здесь: https://www.guru99.com/handling-iframes-selenium.html

...