为什么我的XPath表达式"无法定位元素"?

时间:2014-03-26 11:53:07

标签: xpath

下面是HTML代码,我正在尝试为表格内的用户名文本框创建一个XPath表达式。

我尝试了以下表达式:

  1. 要遍历表://table[@id='Login:LoginScreen:LoginDV']
  2. 要与用户名取得联系://input[@id='Login:LoginScreen:LoginDV:password']
  3. 要访问登录按钮://div/div[2]/div/table/tbody/tr/td/table/tbody/tr[4]/td[5]/a/span[2]
  4. 我收到以下错误消息:

      

    无法找到元素:

    {"method":"xpath","selector":"//input[@id='Login:LoginScreen:LoginDV:username']"‌​}
    

    我是XPath的新手。我正在阅读谷歌上的内容,并尝试从我的读数中了解到的内容。

    <div id="mainContent">
    <div id="Login" class="content">
    <div id="Login:LoginScreen:ttlBar" class="screentitle">
    <input id="Login:LoginScreen:_msgs" type="hidden" name="Login:LoginScreen:_msgs"/>
    <span id="Login:LoginScreen:_msgs_msgs"/>
    <div id="Login:LoginScreen:0" class="info">The submitted user name/password is invalid.</div>
    <table id="Login:LoginScreen:LoginDV" class="dv ">
    <tbody>
    <tr>
    <td valign="top">
    <table id="Login:LoginScreen:LoginDV:0" class="dvColumn" border="0" cellspacing="0" cellpadding="0">
    <tbody>
    <tr>
    <td class="empty-cell">
    <img height="1px" width="1px" border="0" src="images/trans_pixel.gif"/>
    </td>
    <td class="empty-cell">
    <img height="1px" width="1px" border="0" src="images/trans_pixel.gif"/>
    </td>
    <td class="inputLabel">
    <span>User name</span>
    </td>
    <td class="empty-cell">
    <img height="1px" width="1px" border="0" src="images/trans_pixel.gif"/>
    </td>
    <td class="inputValue">
    <input id="Login:LoginScreen:LoginDV:username" class="textBox" type="text" contenteditable="true" onblur="EventHandlers.onBlur(event)" onfocus="EventHandlers.onFocus(event)" helptext="__UseTitle__" size="20" style="text-align: left" delayonchange="false" onclick="event.cancelBubble = true;" onkeydown="DHTML.cancelBubbleIfNoAltKeyOrEnter();" onchange="if (EventHandlers.valueChanged(event, this)==false) return false;" value="" label="User name" name="Login:LoginScreen:LoginDV:username"/>
    </td>
    </tr>
    <tr>
    <tr>
    <tr>
    </tbody>
    </table>
    </td>
    </tr>
    </tbody>
    </table>
    </div>
    </div>
    </div>
    

1 个答案:

答案 0 :(得分:0)

看起来实际问题可能是格式错误的XML:第30,31和32行是没有任何关闭的开放标记。

我将您的XML复制到我的文本编辑器Notepad ++中,该编辑器安装了XML Tools插件。一旦我将这三个标签更改为<tr />,我就使用插件中的XPath表达式计算器来尝试原始的XPath语句//input[@id='Login:LoginScreen:LoginDV:username'],并且它找到了没有任何问题的节点。

(我试图包含截图,但我的代表不够高。可以找到屏幕截图here。)