2017-05-18 1 views
1

비안질 페이지에 각도기 사용 다른 iframe에 중첩 된 iframe의 모달 요소 위치에 문제가 있습니다. 요소를 찾으려고하는데 항상 요소를 찾을 수 없습니다. 오류가 발생합니다.각도기 : 두 번째 중첩 된 iframe에 요소를 찾는 방법

페이지 소스 :

<iframe ... 
    ... 
    <iframe frameborder="0" ... 
     <html 
      <head 
       <body 
        <div id="viewport" style= ... 
         <div id="modal" class=" unit ... 

페이지 개체 :

this.layout = element(by.css('div[data-field="device"]')); 
this.firstIframe = this.layout.element(by.tagName('iframe')); 
this.content = element(by.tagName('body.desktop')); 
this.secondIframe = element.all(by.tagName('iframe')).last(); 
this.modalUnit = element(by.id('modal')); 

사양 :

... 
// waiting for first iframe to be visible 
     browser.wait(EC.visibilityOf(page.firstIframe),10000).then(function() { 

      // switch to first iframe 
      browser.driver.switchTo().frame(page.firstIframe.getWebElement()); 

      // verify content is displayed 
      expect(page.content.isDisplayed()).toBeTruthy(); 

      // switch to default content 
      browser.switchTo().defaultContent(); 
     }); 

     // waiting for second iframe to be visible 
     browser.wait(EC.visibilityOf(page.secondIframe),10000).then(function() { 

      // switch to second iframe 
      browser.driver.switchTo().frame(page.secondIframe.getWebElement()); 

      // waiting for modal to be visible 
      browser.wait(EC.visibilityOf(page.modalUnit),10000).then(function() { 
... 

내용 요소는 문제없이 첫 iframe에 발견된다. 그러나 두 번째 iframe에서 modalUnit 요소를 찾지 못하고 두 번째 iframe을 찾았습니다. 왜 그런가?

+0

"모달 유닛"요소를 검색 할 때 올바른 프레임의 컨텍스트에 있어야합니까? 의미, 당신은 당신이 필요하다고 생각하는 프레임을'last()가 제공 할까? .. – alecxe

+0

@alecxe : 그렇습니다. 왜냐하면 페이지의 모든 iframe 태그를 검색하면 결과가 2가되기 때문입니다. – jurijk

답변

1

허 레카! 내 문제 (https://groups.google.com/forum/#!topic/selenium-users/OkcX2vaZoek)하는 것으로 간단한 해결책 :

... 
// waiting for first iframe to be visible 
     browser.wait(EC.visibilityOf(page.firstIframe),10000).then(function() { 

      // switch to first iframe 
      browser.driver.switchTo().frame(page.firstIframe.getWebElement()); 

      // verify content is displayed 
      expect(page.content.isDisplayed()).toBeTruthy(); 
     }); 

     // waiting for second iframe to be visible 
     browser.wait(EC.visibilityOf(page.secondIframe),10000).then(function() { 

      // switch to second iframe 
      browser.driver.switchTo().frame(page.secondIframe.getWebElement()); 

      // waiting for modal to be visible 
      browser.wait(EC.visibilityOf(page.modalUnit),10000).then(function() { 
... 

는 내가 두 번째 iframe을 전환하기 전에 browser.switchTo().defaultContent();을 제거해야 모든 문제가 사라졌다.

관련 문제