2016-03-10 109 views
0

我正在通過下表工作。我想抓取包含30.0000的<td>標記中的值,但每當我嘗試用Selenium抓住它時,它將返回0.0000。我曾嘗試findElementByXPath(".//*[@id='ctl00_c_dgPOItems_ctl00__0']/td[6]).Text在行文:從​​使用硒標籤獲取文本

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

沒有其他硒命令似乎甚至找到它。有誰知道我爲什麼不能從這張桌子上獲得價值?謝謝。

<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.... 

回答

1

您可以嘗試不同的方法。找到以前的兄弟姐妹,並從那裏開始

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

有什麼好處是看看以前的兄弟姐妹?這是否會使代碼「從不同的角度」看待它,因爲沒有更好的單詞? – Rinktacular

+0

@Rinktacular您使用的'xpath'正在中繼'​​'標籤的位置,您希望成爲六個'​​'。如果通過JavaScript添加/刪除某些標籤,它將改變標籤的相對位置,因此'td [6]'不再相關。 – Guy

+0

它可能不會發生,但不會有任何區別。 – Guy

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']"))); 
+0

啊我沒有那麼感謝,我會盡量設定一個等待 – Rinktacular