Я пишу автоматизацию с 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
}
, но теперь я получаю устаревшие элементы при попытке переключиться на фрейм. Когда я первоначально нашел только фреймы, а не фреймы, я не думаю, что эта проблема произошла.
В любом случае, каков будет правильный способ сделать это? Я пытался использовать имена фреймов, но не все фреймы имеют Имена увядшие.