2015-10-22 29 views
0

我在嘗試訪問具有ID和類的嵌套div時遇到了問題,我不知道爲什麼,但我只能看到他的父項。 這是HTML代碼:Watir-Webdriver無法訪問帶有ID和類的元素

<html xml: lang="en" xmlns="http://www.w3.org/1999/xhtml" webdriver="true"> 
<head id="ctl00_Head1"></head> 
<body onunload="deshabilitaHistoria();" onload="deshabilitaHistoria();"> 
    <form id="aspnetForm" action="ConsultaReceptor.aspx" method="post"> 
<div class="aspNetHidden"></div> 
<script type="text/javascript"> 

//<![CDATA[ var theForm = document.forms['aspnetF… 

</script> 
<script type="text/javascript" src="/WebResource.axd?d=w3hP2KgSK0z5QKKeYrfjOjGIUO1WTymINPb1PJaT2…AjAREgWLQ_9gOp19BJLQL03iwEhxTK_VlYMMLk1&t=635757173565717094"></script> 
<script type="text/javascript" src="/ScriptResource.axd?d=JZxa8gqDBBrScXZMeyf5kBYrESwOlB3UypK5wa…sdGfW92qpYAba8RsL1xfZ_4qsx20HZ3gnR8gWNG81&t=ffffffff805766b3"></script> 
<script type="text/javascript" src="/ScriptResource.axd?d=Z6KcuJ_OzxT6nvHmSunXcYkoXPPYk2iZ6iqqza…Mhq8K8bd09EWTYt8d-AfoMh3rrp75DWb5vMAI1wb0&t=ffffffff805766b3"></script> 
<script type="text/javascript"> 

//<![CDATA[ var PageMethods = function() { PageMe… 

</script> 
<div class="aspNetHidden"></div> 
<script type="text/javascript"> 

//<![CDATA[ Sys.WebForms.PageRequestManager._init… 

</script> 
<div id="cuerpo_principal"> 
    <div id="encabezado"></div> 
    <div id="menucontainer"></div> 
     <div id="cuerpo" style="margin-top: 30px"> 
      <h2 class="subtitle"> 

      Consultar Facturas Recibidas 

      </h2> 
      <span></span> 
      <br></br> 
      <br></br> 
       <div id="ctl00_MainContent_PnlConsulta" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_MainContent_BtnBusqueda')"> 

        <div id="ctl00_MainContent_UpnlBusqueda"></div> 
         <div id="ctl00_MainContent_UpnlResultados"> 
          <div id="ctl00_MainContent_PnlResultados" class="pnlResultados" style="height:auto;display:inline;"> 
           <div id="DivContenedor" class="resultados" style="width: 900px; margin-left: 40px; overflow-x: scroll; height: auto; float: left"> 
            <div id="ContenedorDinamico" style="margin-left: 0px;"> 
            <table class="encabezadoresultado"></table> 
             <div id="DivPaginas" style="height: auto;"> 
              <div id="masivapg0" class="pgActual"></div> 

我試圖訪問的DIV是

div id="masivapg0" class="pgActual" 

我想通過下面的代碼來訪問元素,但我總是得到一個錯誤的結果:

print browser.form(id: 'aspnetForm').div(id: 'cuerpo_principal').div(id: 'cuerpo').div(id: 'ctl00_MainContent_PnlConsulta').div(id: 'ctl00_MainContent_UpnlResultados').div(id: 'ctl00_MainContent_PnlResultados').div(id: 'DivContenedor').div(id: 'ContenedorDinamico').div(id: 'DivPaginas').div(id: 'masivapg0').exist? 

但是,如果我尋找自己的父母,我總是得到真正的迴應:

print browser.form(id: 'aspnetForm').div(id: 'cuerpo_principal').div(id: 'cuerpo').div(id: 'ctl00_MainContent_PnlConsulta').div(id: 'ctl00_MainContent_UpnlResultados').div(id: 'ctl00_MainContent_PnlResultados').div(id: 'DivContenedor').div(id: 'ContenedorDinamico').div(id: 'DivPaginas').exist? 

任何想法爲什麼會發生這種情況? 感謝您的幫助!

+2

因爲ID是在頁面上獨一無二的,你不應該需要大量窩找到它。什麼browser.div(id:'masivapg0')。存在?給你? – titusfortner

+0

它給了我一個錯誤的答覆,它似乎找不到它 –

+0

是否有更多的頁面(可能是動態更新的東西)?如果我使用給定的HTML創建頁面,'.div(id:'masivapg0')。exists?'會返回所需的'true'結果。 –

回答

0

我裝你的HTML到一個文件並在運行的Watir和它,而瀏覽器沒有由於不完整的HTML代碼顯示任何可能的是,它沒有像這樣返回true任何問題:

browser.div(:id => "masivapg0").exists? 
#=> true 

ID標籤都應該是獨一無二的,所以你不應該提供任何更多的選擇比這...