Как найти элемент iFrame - PullRequest
       2

Как найти элемент iFrame

0 голосов
/ 28 декабря 2018

Я пытаюсь найти веб-элемент iFrame, но получаю «Нет таких исключений».

Это способ, которым я пытаюсь найти iFrame:

@FindBy(id="iframe_uz04pghfaa")
public WebElement ifrmContactIframe;

public void SwitchToIframe() throws ParserConfigurationException, SAXException, IOException 
{       
    try 
    {
        ifrmContactIframe.isDisplayed();    //if the element is displayed it means that he exist
        driver.switchTo().frame(ifrmContactIframe);
    }
    catch (Exception e)
    {
        fail("Element does not exist"); 
    }
}

Снимок HTML: This is picture of the site code

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Скорее всего, ваш кадр генерируется случайным образом. В вашем методе попробуйте следующее:

    try 
        {
            List<WebElement> totalFrames = driver.findElements(By.cssSelector("*[id^='iframe_'"));
            System.out.println("Total FRMAES =" + totalFrames .size()); 
            ifrmContactIframe = totalFrames.get(0);

            ifrmContactIframe.isDisplayed();    //if the element is displayed it means that he exist
            driver.switchTo().frame(ifrmContactIframe);
        }
        catch (Exception e)
        {
            fail("Element does not exist"); 
        }
0 голосов
/ 28 декабря 2018

Чтобы найти и переключиться на iFrame , вам необходимо:

  • Индуцировать WebDriverWait для желаемого кадра, который должен быть доступен, и переключиться наit .
  • Вы можете использовать следующее решение:

    • Использование CSS_SELECTOR:

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe[id^='iframe_'][name^='iframe_'][src^='/crm/contact/details/']")));
      
    • Использование XPATH:

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[starts-with(@id,'iframe_') and starts-with(@name,'iframe_')][starts-with(@src, '/crm/contact/details/')]")));
      

PS : Здесь вы можете найти соответствующее обсуждение по Способамиметь дело с #document под iframe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...