使用XPath通配符使用Selenium WebDriver访问对象

时间:2015-07-03 04:19:40

标签: selenium xpath selenium-webdriver automation

我无法访问带有 当前基金价值 的文字的对象。

在Chrome上使用Firebug,元素的xpath为:

//*[@id="poc"]/div[1]/div[4]/table/tbody/tr[1]/th/a

在Firefox上使用Firebug,元素的xpath是:

/html/body/div[2]/div[9]/div/div/div/div/div[2]/div[1]/div[4]/table/tbody/tr[1]/th/a

我努力但(我觉得不够用)使用下面的代码来访问动态更改“div [1] / div [4]”部分的对象。任何帮助将不胜感激:

@FindBy(how = How.XPATH, using = "//a[starts-with(@id, 'poc')] and
contains[(@text, 'Current Fund Value')]")

@FindBy(how = How.XPATH, using = "//input[starts-with(@id, 'poc')] and
contains[(@linktext, 'Current Fund Value')]")

@FindBy(how = How.XPATH, using = "//input[contains[(@text, 'Current
Fund Value')]")

这是HTML

<table>
   <tbody>
      <tr>
         <th>
            <a class="tooltip abbr">
            Current Fund Value:
            </a>
         </th>
         <td class="value dollar"><span class="symbol">$</span><span class="amount">    32,498</span><span class="decimal"><span class="point">.</span><span class="amount">90</span></span></td>
      </tr>
   </tbody>
</table>

更新

出现具有相同文本的多个项目的方式如下所示:

第一张表

//*[@id="poc"]/div[1]/div[3]/table[1]/tbody/tr[1]/th/a

第二张表

//*[@id="poc"]/div[1]/div[3]/table[2]/tbody/tr[1]/th/a

第3页

//*[@id="poc"]/div[1]/div[3]/table[3]/tbody/tr[1]/th/a

2 个答案:

答案 0 :(得分:1)

我会选择基于文字的搜索

//table//a[contains(text(),'Current Fund Value:')]

答案 1 :(得分:0)

所以你有一个id为poc的元素,你有多个表,在其中一个表中有一个文本为“Current Fund Value”的元素,如果这是正确的,那么你必须提到表点击poc元素后按住此文本。