【问题标题】:Create the Xpath for the following href for Selenium Webdriver为 Selenium Webdriver 的以下 href 创建 Xpath
【发布时间】:2015-02-24 22:26:23
【问题描述】:

请帮我为以下 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>

【问题讨论】:

    标签: javascript selenium


    【解决方案1】:

    使用以下算法来选择您的元素。

    CSS

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

    Xpath

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

    xpath有点丑,肯定不正确,但是CSS算法是正确的。

    当您想匹配任何属性(包括 href)时,请使用此算法。

    问自己这些问题:

    1. 我选择的元素是什么?
    2. 我选择的属性是什么?
    3. 属性是否唯一?

    在您的情况下,#1 的答案是&lt;a&gt;。 #2 的答案是href。答案 #3,可能不是,因为可能会有更多这样的 href。而 ID 通常是唯一的。 (毕竟它被称为标识符)。您可以做的是查看父级并使用它的 ID。

    在 CSS 中span#idSpanActionLinks &gt; a 会工作得很好。 (*# 只是 id see here 的 css 快捷方式)

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

    编辑

    在您发表评论后,由于您想匹配href,因此您可以:

    CSS

    a[href*='OnEventQueue']
    

    Xpath

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

    两者都可以。

    请注意,这两个语句在英语中的意思是:

    给我找一个&lt;a&gt;元素,它的属性href包含OnEventQueue

    【讨论】:

    • 我已经检查过了,span id 不是唯一的,3 个链接相同,但我可以看到每个 href 和 align 属性的唯一方法名称是唯一的。您能否帮助准备 CSS 或 Xpath:
    【解决方案2】:

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

    例如:

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

    【讨论】:

    • Xpath 提供的工作但有 3 个链接具有相同的跨度 id,因此它点击了第一个链接,但没有点击所需的链接。所需的链接在第二个位置。请你帮忙,如何单击具有相同跨度 ID 的下一个链接。 事件队列跨度>
    • 所有 href 具有相同的 span id 但我可以看到不同的 align 属性,这有助于识别和创建一个唯一的 xpath 以单击事件队列链接。
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2015-09-17
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多