为Selenium Webdriver创建以下href的Xpath

时间:2015-02-24 13:10:25

标签: javascript selenium

请帮我为以下href创建Xpath。我使用Selenium webdriver并且只有IE浏览器。以下是HTML: 需要Xpath:a href =“javascript:OnEventQueue();”>。 我只能使用IE浏览器,需要点击此链接。

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Transitional//EN"><META http-equiv="Content-Type" content="text/html; charset=windows-1252">

    <html>
    <body>
      <form name="runevent1" action="/epace/epace-cgi/eglcgids.exe?sessionid=" method="post" btnSubmit="javascript:preSumbit()" EParams="http://vaim1-apt-120/epace/epace-cgi/eglcgids.exe?sessionid=&Action=runevent1&EventType=&EventInst=#" EParamOptions="http://vaim1-apt-120/epace/epace-cgi/eglcgids.exe?sessionid=&Action=runevent1&EventType=&EventInst=#">
        <table width="100%" align="center" border="0">
          <tbody>
            <tr class="topMenu">
              <td align="right">
                <span id="idSpanActionLinks">
                  <a href="javascript:OnEventQueue();">
                    <font class="topMenu">Event Queue</font>
                  </a>
                </span>
              </td>
            </tr>
          </tbody>
        </table>
      </form>
    </body>
  </html>

2 个答案:

答案 0 :(得分:1)

使用以下算法选择元素。

CSS

element[attribute(^|*|$|~)='attribute value']

Xpath的

//element[(@attribute|contains|starts-with|ends-with(@attribute, 'value'))='value'

xpath有点丑陋,绝对不正确,但CSS算法是正确的。

如果您想要匹配任何属性,包括您想要的href,请使用此算法。

问自己这些问题:

  1. 我选择的元素是什么?
  2. 我选择的属性是什么?
  3. 属性是唯一的吗?
  4. 在您的情况下,#1的答案是<a>。对#2号的回答是href。答案#3,可能不是,因为可能会有更多href这样的问题。而ID,通常是独一无二的。 (毕竟它被称为标识符)。您可以做的是查看父级并使用它的ID。

    在CSS中span#idSpanActionLinks > a 会工作得很好。 (* #只是id see here

    的CSS快捷方式

    在Xpath中//span[@id='idSpaceActionLinks']/a

    修改

    发表评论后,由于您希望匹配href,请转到:

    CSS

    a[href*='OnEventQueue']
    

    Xpath的

    //a[contains(@href, 'OnEventQueue')]
    

    两者都有效。

    请注意,这两个陈述均以英文表示:

      

    找到一个<a>元素,其属性href 包含OnEventQueue

答案 1 :(得分:0)

XPath并不是唯一的。对于不同级别的“精度”,您可以使用不同的路径。

E.g:

//*[@id="idSpanActionLinks"]/a