org.openqa.selenium.InvalidSelectorException - [object Text]。它应该是一个元素

时间:2016-07-24 15:10:50

标签: selenium xpath selenium-webdriver

我正在尝试从以下使用XPATH检索值email1,Email2和HT



<table class="table-striped table-bordered" cellspacing="0" style="table-layout: fixed; width: 100%;">
<colgroup>
<tbody>
<tr class="GPEHNV5BGF GPEHNV5BNF" __gwt_subrow="0" __gwt_row="0">
<td class="GPEHNV5BFF GPEHNV5BHF GPEHNV5BIF GPEHNV5BOF">
<div __gwt_cell="cell-gwt-uid-515" style="outline-style:none;">email1</div>
</td>
<td class="GPEHNV5BFF GPEHNV5BHF GPEHNV5BOF">
<td class="GPEHNV5BFF GPEHNV5BHF GPEHNV5BCG GPEHNV5BOF">
</tr>
<tr class="GPEHNV5BFG" __gwt_subrow="0" __gwt_row="1">
<td class="GPEHNV5BFF GPEHNV5BGG GPEHNV5BIF">
<div __gwt_cell="cell-gwt-uid-515" style="outline-style:none;">Email2</div>
</td>
<td class="GPEHNV5BFF GPEHNV5BGG">
<td class="GPEHNV5BFF GPEHNV5BGG GPEHNV5BCG">
</tr>
<tr class="GPEHNV5BGF" __gwt_subrow="0" __gwt_row="2">
<td class="GPEHNV5BFF GPEHNV5BHF GPEHNV5BIF">
<div __gwt_cell="cell-gwt-uid-515" style="outline-style:none;">HT</div>
</td>
<td class="GPEHNV5BFF GPEHNV5BHF">
<td class="GPEHNV5BFF GPEHNV5BHF GPEHNV5BCG">
</tr>
&#13;
&#13;
&#13;

以下是我的XPATH代码:

int rows=driver.findElements(By.xpath("//table[@class='table-striped table-bordered']/tbody/tr")).size();
        List<String> EmailConnectorRoutineList= new ArrayList<String>();
        for(int i=0;i<=rows;i++){
            String referenceName=null;
            referenceName=driver.findElement(By.xpath("//table[@class='table-striped table-bordered']/tbody/tr[@ __gwt_row='"+i+"']/td[1]/div/text()")).getText();

            //referenceName=refName.getText();
            EmailConnectorRoutineList.add(referenceName);
        }

我也尝试过XPATH

//table[@class='table-striped table-bordered']/tbody/tr[@ __gwt_row='"+i+"']/td[1]/div/text()")).getAttribute("value");

显示以下错误:

  

org.openqa.selenium.InvalidSelectorException:给定的选择器//表[@class =&#39;表条纹表格边界&#39;] / tbody / tr [@ __gwt_row =&#39; 0&#39 ;] / td [1] / div / text()无效或不会产生WebElement。发生以下错误:   InvalidSelectorError:xpath表达式的结果&#34; // table [@class =&#39; table-striped table-bordered&#39;] / tbody / tr [@ __gwt_row =&#39; 0&#39;] / TD [1] / DIV /文本()&#34;是:[对象文本]。它应该是一个元素。

2 个答案:

答案 0 :(得分:4)

您无法将XPath表达式指向Selenium中的文本节点。最后省略/text()部分。

答案 1 :(得分:0)

我不知道你使用的是什么语言,但你肯定需要在 xpath 中省略 /text()
并且如果您想要文本,您必须在末尾添加 .get 或 .get() 之类的内容

//....tbody/tr[@ __gwt_row='"+i+"']/td[1]/div")).get();