2016-08-05 54 views
1

试图在ID字段中输入数据,但看到以下消息:无法定位元件消息

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"id","selector":"attribute.ID"} 

试过各种元件,但它不是能够找到屏幕上的输入字段。

使用检查在FireFox元素(Q)督察下滚动标题

iframe#iframe01 > html..js... > body... > div#cpo-folder > div.cpo-content-wrapper > div.cpo-content > iframe#iframe02 > html > frameset > frame > html... > body#SearchFilter > div.dt-filter.filter > form#filterForm > table.tbody > tr > input 

HTML代码

<html class="..." lang="en"> 
    <iframe name="iframe01" id="iframe01" src="..." title="Navigation" scrolling="no" lang="en"> 
     <html class="..." lang="en"> 
     <iframe id="iframe02" name="iframe02" class="..." title="Main" frameborder="0" lang="en"> 
      <html lang="en"> 
       <frameset rows="150px,*" border="0"> 
        <frame name="frame01" src="..." title="Results" noresize=""> 
         <html ...> 
          <body id="SearchFilter" onunload="destroy()"> 
           <h1> Identifier Search </h1> 
           <div class="dt-filter filter" style="display: block"> 
            <form id="filterForm" action="..." method="POST" target="Results"> 
             <table> 
              <tbody> 
               <tr> 
                <td class="label" nowrap="">ID</td> 
                <td><input name="attribute.ID" size="20" tabindex="1" type="text"></td> 
                <td class="label" nowrap=""></td> 
                <td><tabindex=4></tabindex=4></td> 
               </tr> 
               <tr> 
              </tbody> 
             </table> 
            </form> 
           </div> 
          </body> 
         </html> 
        </frame> 
       </frameset> 
      </html> 
     </iframe> 
    </html> 
</iframe> 

Java代码:

public static void click_IdentifierSearch() throws InterruptedException{ 
    driver.switchTo().defaultContent(); 
    driver.switchTo().frame("iframe01"); 
    driver.switchTo().frame("iframe02"); 
    Thread.sleep(2000); 
    driver.findElement(By.id("attribute.ID")).sendKeys("123456789"); 
} 

回答

1

其实input元素在里面的三帧,而你是开关只有两帧你需要切换第三帧以及和input元素具有name属性值attribute.ID而不是ID的,所以你应该如下尝试: -

driver.switchTo().defaultContent(); 
driver.switchTo().frame("iframe01"); 
driver.switchTo().frame("iframe02"); 
driver.switchTo().frame("frame01"); 
driver.findElement(By.name("attribute.ID")).sendKeys("123456789"); 

: - driver.switchTo().frame();用于切换frameiframe两者。

相关问题