В моем проекте есть IFrame, чей идентификатор изменяются каждый раз, когда мы нажимаем на этотПытаясь найти динамическую страницу Iframe в селене WebDriver
Я попробовал многочисленные способы работы по этому вопросу
1) List<WebElement> frameList=driver.findElements(By.tagName("iframe"));
System.out.println(frameList.size());
for(int i =0; i<(frameList.size());i++){
driver.switchTo().frame(i);
System.out.println(i);
try{
driver.findElement(By.id("TextBox_4")).sendKeys("987654321");
System.out.println("Element found");
}
catch (NoSuchElementException e){
System.out.println("Element not found");
}
// это проверит элемент в iframe.
2) WebElement frame =
driver.findElement(By.xpath("//div[contains(@id,'title')]"));
driver.switchTo().frame(frame);
// этот поиск кадр с использованием XPath и содержит ключевое слово, но его показ элемента не найден исключения
3) int frameSize = driver.findElements(By.tagName("iframe")).size();
System.out.println(frameSize);
driver.switchTo().frame(2);
// напечатать размер кадра (то есть 3) и попробовал каждое значение кадра (т.е. 0,1,2)
Пожалуйста, исправьте выше код.
Благодаря Дивакар
Каковы некоторые примеры идентификаторов 'IFRAME', например. как это изменилось? В любом случае может быть доступ к нему. Является ли 'IFRAME' всегда в одном месте в HTML? например внутри какого-то элемента, который можно идентифицировать последовательно? – JeffC
В дополнение к тому, что сказал JeffC, пожалуйста, поделитесь своей страницей с нами. Его трудно помочь без каких-либо подробностей. – testerjoe2
Попробуйте использовать ** [frameToBeAvailableAndSwitchToIt] (https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#frameToBeAvailableAndSwitchToIt-org.openqa.selenium.By -) **, применяя [Явное ожидание] (http://stackoverflow.com/a/14515517/4193730). Это упростит вас для вас. Чтобы заставить все работать, сначала найдите iframe на вкладке HTML Firebug, сделайте свой xpath для iFrame, а затем используйте вышеупомянутый метод. – Subh