使用Selenium从标记中获取文本

时间:2016-03-10 19:42:03

标签: c# html selenium

我正在通过下表进行操作。我想获取包含30.0000的<td>标记内的值,但每当我尝试使用Selenium获取它时,它返回0.0000。我尝试了findElementByXPath(".//*[@id='ctl00_c_dgPOItems_ctl00__0']/td[6]).Text,其中的文字显示为:

  

<td align="center">30.0000</td>

没有其他selenium命令似乎甚至找不到它。有谁知道为什么我不能从这张桌子中获得价值?谢谢。

<tr id="ctl00_c_dgPOItems_ctl00__0" class="rgRow">
    <td class="rgExpandCol">
        <img style="border-width:0px;" alt="Collapse" src="/Images/icons/collapse-icon.png" onclick="$find("ctl00_c_dgPOItems_ctl00")._toggleExpand(this, event); return false;" title="Collapse"/>
    </td>
    <td>ROS50462</td>
    <td>ENSURE CHOCOLATE ENTERAL FOOD UNIT/CAN</td>
    <td>Can(s)</td>
    <td style="width:50px;">
        <span id="ctl00_c_dgPOItems_ctl00_ctl04_txtQuantity_wrapper" class="riSingle    RadInput RadInput_Office2007" style="width: 40px;">
    </td>
    <td align="center">30.0000</td>
    //rest of table....

2 个答案:

答案 0 :(得分:2)

您可以尝试不同的方法。找到以前的兄弟姐妹并从那里开始

driver.FindElement(By.XPath("//[@id='ctl00_c_dgPOItems_ctl00_ctl04_txtQuantity_wrapper']/../following-sibling::td")).Text;

答案 1 :(得分:0)

当您尝试阅读时,元素中的文本很可能等于“0.0000”。 我会尝试排除默认值并等待它:

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
WebElement element = wait.Until<IWebElement>(d => d.FindElement(
  By.XPath(".//*[@id='ctl00_c_dgPOItems_ctl00__0']/td[6][text()!='0.0000']")));