Watir-Webdriver无法访问具有id和class的元素

时间:2015-10-22 03:47:00

标签: watir watir-webdriver

我在尝试访问具有id和class的嵌套div时遇到了麻烦,我不知道为什么,但我只能看到他的父母。 这是HTML代码:

<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?

知道为什么会发生这种情况? 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我将你的html加载到一个文件中并在watir中运行,虽然浏览器没有显示任何可能由于不完整的html代码而导致的任何问题,但它没有任何问题返回true,如下所示:< / p>

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

id标签应该是唯一的,所以你不应该提供比这更多的选择器...