Selenium - 试图通过其内容使用&#34来定位表格单元格;包含"

时间:2016-02-15 16:15:31

标签: java selenium xpath webdriver contains

这是html代码:

<div id="listMain" class="listMain">
    <table id="listMainTable" class="listTable" >
    <thead>
    <tbody id="mainTableBody">
        <tr id="Node0" class="row"      tabindex="0" >
        <tr id="Node1" class="alternateRow"     tabindex="-1" >
        <tr id="Node2" class="row"      tabindex="-1" >
        <tr id="Node3" class="alternateRow"     tabindex="-1" >
        <tr id="Node4" class="row"      tabindex="-1" >
            <td class="cell" >
            <td class="cell" >
                <div id="detailView_listColumn_4" style="overflow: hidden" aria-describedby="detailView_mainTooltip">TestReport</div>
            </td>
            <td class="cell" >
            <td class="cell" >
        <tr id="Node5" class="row"      tabindex="0" >
        <tr id="Node6" class="alternateRow"     tabindex="-1" >

</tbody>
</table>
</div>

我想访问第5行第2列的内容。

我可以通过直接访问给出行和列号的单元格来执行此操作:driver.findElement(By.xpath(&#34; // table [@id =&#39; listMainTable&#39;] / / TR [5] / TD [2]&#34));

但是,我想使用&#34; contains&#34;。

按内容访问单元格

我尝试了以下两种方式:

driver.findElement(By.xpath(&#34; // table [@id =&#39; listMainTable&#39;] // tr [contains(td [1],&#39; TestReport&#39; )] / TD [2]&#34));

driver.findElement(By.xpath(&#34; // table [@id =&#39; listMainTable&#39;] / tbody / tr / div [contains(text(),&#39; TestReport&# 39)]&#34));

两者都抛出错误 - 引起:org.openqa.selenium.NoSuchElementException:无法找到元素。

我不知道这是否与&#34; TestReport&#34;被包含在&#34; div&#34;在表格单元格内。在这种情况下,我如何使用&#34; contains&#34;来访问该特定单元格。 ?

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情

//div[contains(text(),'TestReport')]

谢谢你, 穆拉利

答案 1 :(得分:0)

您的HTML格式不正确。有些标签没有相应的结束标签。

您可以使用以下内容。

driver.findElement(By.xpath("/html/div[@id='listMain']/table[@id='listMainTable']/tbody[@id='mainTableBody']/tr[5]/td[2]/div[contains(text(),'TestReport')]"));

HTML

<html>
<div id="listMain" class="listMain">
<table id="listMainTable" class="listTable" >
<thead/>
<tbody id="mainTableBody">
    <tr id="Node0" class="row"      tabindex="0" />
    <tr id="Node1" class="alternateRow"     tabindex="-1" />
    <tr id="Node2" class="row"      tabindex="-1" />
    <tr id="Node3" class="alternateRow"     tabindex="-1" />
    <tr id="Node4" class="row"      tabindex="-1" >
        <td class="cell" />
        <td class="cell" >
            <div id="detailView_listColumn_4" style="overflow: hidden" aria-describedby="detailView_mainTooltip">TestReport</div>
        </td>
        <td class="cell" />
        <td class="cell" />
    </tr>
    <tr id="Node5" class="row"      tabindex="0" />
    <tr id="Node6" class="alternateRow"     tabindex="-1" />

</tbody>
</table>
</div>
</html>