C#Selenium无法从基于tr和td标记的表中获取单元格值

时间:2018-01-27 02:09:33

标签: c# html selenium

我似乎不知道为什么我的代码无法获取单元格值而不是它总是抛出异常说明附加信息:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34 ; xpath&#34;,&#34; selector&#34;:&#34; html / body / div [2] / div [2] / table / tr [1] / td [0]&#34;} < / p>

下面是我的表HTML页面。

<div class="tableBlock">            
    <table class="tableTag">
        <tr>
            <th>Name</th>
            <th>Favorite Color</tr>
        <tr>
            <td>Ken Master</td>
            <td>
                <input type="text" value="yellow" class="favoriteColorInput"/>
            </td>
        </tr>
        <tr>
            <td>Adon Matsui</td>
            <td>
                <input type="text" value="red" class="favoriteColorInput"/>
            </td>
        </tr>
        <tr>
            <td>Robert Carlos</td>
            <td>
                <input type="text" value="Green" class="favoriteColorInput"/>
            </td>
        </tr>
        <tr>
            <td>Ronaldo Luis</td>
            <td>
                <input type="text" value="Green" class="favoriteColorInput"/>
            </td>
        </tr>
  </table>  
</div>

当我执行下面的代码时,它会成功返回此字符串:

&#34; table =&#34; Name Favorite Color \ r \ nKen Master \ r \ nAdon Matsui \ r \ nRobert Carlos \ r \ nRonaldo Luis&#34;

string table = webDriver.FindElement(By.XPath("/html/body/div[2]/div[2]/table")).Text;

但是当我尝试根据行和列获取单元格值时,它会抛出异常,如上所述。以下是调用获取单元格值的代码。

string cellVal = webDriver.FindElement(By.XPath("html/body/div[2]/div[2]/table/tr[1]/td[0]")).Text;

所以我想知道我错过了什么?

感谢。

更新

string cellVal = webDriver.FindElement(By.XPath("/html/body/div[2]/div[2]/table/tr[1]/td[0]")).Text;

解决:

使用Chrome XPath帮助程序,不知何故它会在我的HTML页面中添加tbody,但在使用它之后,它可以正常工作。

谢谢大家的帮助。非常感谢。

1 个答案:

答案 0 :(得分:2)

td[0]引起的问题,在xpath中,索引从1开始而不是0,因此将xpath更改为/html/body/div[2]/div[2]/table/tr[1]/td[1]