2016-10-10 2 views
0

В моем проекте есть 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)

Пожалуйста, исправьте выше код.

Благодаря Дивакар

+1

Каковы некоторые примеры идентификаторов 'IFRAME', например. как это изменилось? В любом случае может быть доступ к нему. Является ли 'IFRAME' всегда в одном месте в HTML? например внутри какого-то элемента, который можно идентифицировать последовательно? – JeffC

+0

В дополнение к тому, что сказал JeffC, пожалуйста, поделитесь своей страницей с нами. Его трудно помочь без каких-либо подробностей. – testerjoe2

+0

Попробуйте использовать ** [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

ответ

0

Если фиксированное количество iframes, вы могли бы использовать этот конкретный индекс для доступа к конкретным iframe. Пусть у вас есть пять iframes, и вы хотите, чтобы выбрать третий iframe затем переключиться на него с помощью

driver.switchTo().frame(2); 

Я думаю, это может решить вашу проблему.

Смежные вопросы