Сброс Iframe и Frame для файлов журнала - PullRequest
0 голосов
/ 07 февраля 2020

Я пишу автоматизацию с Java и Selenium. Эта автоматизация должна использовать IE (вместо Chrome). Это использует всплывающее окно windows, фреймы и фреймы. На многих windows Inspect работать не будет.

То, что я пытаюсь сделать, для страницы - сначала сбросить исходный код в файл. Затем для каждого кадра и Iframe переключитесь на этот кадр или Iframe (и сделайте то же самое). Каждый кадр, имеющий свои собственные кадры или фреймы, на которые я переключаюсь и выгружаю.

Мои выходные файлы будут иметь префикс (например, "bill. html", который будет иметь основной фрейм. Затем каждый фрейм или фрейм внутри него будет стоять префикс (от 0 до bill_0. html, от 1 до bill_1. html и т. д. c). Вложенные фреймы будут выглядеть как bill_0_1. html и т. д. c.

Мой метод довольно прост. У меня есть метод с именем

  dumpSourceToFile(WebDriver driver, String File)

Мой метод в основном выполняет следующее

 public void dumpIframes(driver, String pref) {
     String file = pref + ".html";
     dumpSourceToFile(driver, pref);
     List<WebElement> allFrames = new ArrayList<>();
     List<WebElement> frames = driver.findElements(By.xpath("//frame"));
     allFrames.addAll(frames);
     List<WebElement> iFrames = driver.findElements(By.xpath("//frame"));
     allFrames.addAll(iFrames);

     for (Integer ind = 0; ind < allFrames.size(); ind++) {
         String npref = pref + "_" + ind.toString(); // new file name
         driver.switchTo().frame(ind);
         dumpIframes(driver, npref);
         driver.switchTo().defaultContent(); // ready for next one
     }

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

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

...