2014-02-26 54 views
2

使用Xpath單擊基於表列值的複選框。下面是html單擊基於表列值的複選框 - IE Webdriver Selenium

<table id="tblHotels"> 
    <TBODY> 
    <TR> 
     <TH align="left"> 
     <INPUT checkbox="" id="chkNSelectAll name=chkNSelectAll type="/> 
     </TH> 
     <TH align="left" title="Hotel">Hotel</TH> 
     <TH title=" align=left"> 
     <SPAN id="spnExpandBtn"> 
      <IMG/> 
     </SPAN> 
     </TH> 
     <TH align="left" title="Hotel">Hotel</TH> 
     <TH align="left" title="Reg Date">Reg Date</TH> 
     <TH align="left" title="Room Type">Room Type</TH> 
     <TH align="left" title="Location">Location</TH> 
     <TH align="left" title="Room Number">Room Number</TH> 
    </TR> 
    <TR> 
     <TD colSpan="11"> 
     <IMG src=" ../NoExpiry/images/uaimBSpacer.gif"/> 
     </TD> 
    </TR> 
    <TR> 
     <TD> 
     <INPUT id="chkNSelect" name="chkNSelect" type="checkbox" value="on"/> 
     </TD> 
     <TD customHiddenText="">MATHEW Joe</TD> 
     <TD/> 
     <TD customHiddenText=""> 
     <SPAN>Affray (
      <STRONG/>Kim Lee) 
     </SPAN> 
     </TD> 
     <TD class="regDate customHiddenText=">10/01/2014</TD> 
     <TD customHiddenText="">1HE</TD> 
     <TD customHiddenText="">South West </TD> 
     <TD id="tdChildroom name=" tdChildroom=""/> 
     <INPUT id="hidYID" name="hidYID" type="hidden" value="409"> 
     <INPUT id="hidYD" name="hidYD" type="hidden"> 
      <INPUT id="hidYDID" name="hidYDID" type="hidden" value="1015389"/> 
     </INPUT> 
     </INPUT> 
    </TR> 
    <TR> 
     <TD> 
     <INPUT id="chkNSelect" name="chkNSelect" type="checkbox" value="on"/> 
     </TD> 
     <TD customHiddenText="">MATHEW Penny</TD> 
     <TD/> 
     <TD customHiddenText=""> 
     <SPAN>Affray (
      <STRONG/>Jim Lee) 
     </SPAN> 
     </TD> 
     <TD class="regDate customHiddenText=">10/01/2014</TD> 
     <TD customHiddenText="">1HE</TD> 
     <TD customHiddenText="">South West </TD> 
     <TD id="tdChildroom name=" tdChildroom=""/> 
     <INPUT id="hidYID" name="hidYID" type="hidden" value="409"> 
     <INPUT id="hidYD" name="hidYD" type="hidden"> 
      <INPUT id="hidYDID" name="hidYDID" type="hidden" value="1015389"/> 
     </INPUT> 
     </INPUT> 
    </TR> 
    </TBODY> 
</table> 

這裏是我正在嘗試和這總是點擊第一個複選框?

Driver.FindElementByXPath("//td[contains(text(),'MATHEW Penny')]/preceding::td/input[@name='chkNSelect']").Click() 

,如果我嘗試只是找到它可以找到它不是爲什麼它無法找到前面的複選框,並跳轉到第一行復選框文本列?

Driver.FindElementByXPath("//td[contains(text(),'MATHEW Penny')] 

我的要求是選擇第一個複選框(做某事如:將它添加到另一個表)取消它,然後檢查第二複選框(做某事如:將它添加到另一個表)。

回答

2

使用MATHEW竹篙:

//td[contains(text(),'Penny')]/preceding-sibling::td/input[@name='chkNSelect'] 

使用MATHEW喬:

//td[contains(text(),'Joe')]/preceding-sibling::td/input[@name='chkNSelect'] 
+0

fab!之前的兄弟姐妹::已完成魔術:)所以它仍然適用於它Mathew Driver.FindElementByXPath(「// td [contains(text(),'MATHEW Penny')]/preceding-sibling :: td/input [@ name ='chkNSelect']「)。Click() – Gauls

0

它選擇所有input元素與namechkNSelect之前td與文本MATHEW Penny
使用

//td[contains(text(),'MATHEW Penny')]/preceding::td/input[last()][@name='chkNSelect'] 

只選擇第一個這樣的輸入

+0

這並沒有幫助要麼它總是選擇第一個複選框:(我試圖用tr不檢查任何框Driver.FindElementByXPath(「// tr [td [contains(text(),' MATHEW Penny')]/preceding :: td/input [@ name ='chkNSelect']]「)。Click() – Gauls

+0

@Gauls:我已經更新了我的答案。 – xyz

+0

nope仍然是相同的第一行復選框:( – Gauls

0

你可以嘗試:

  • 首先瞄準tr
  • 包含td你想要的文本節點(使用謂語)
  • ,然後去一個input該錶行

讓翻譯在td內於:

Driver.FindElementByXPath("//tr[td[contains(text(),'MATHEW Penny')]]/td/input[@name='chkNSelect']") 

擊穿:

//tr[ 
     td[ 
       contains(text(),'MATHEW Penny') 
      ] 
    ] 
    /td/input[@name='chkNSelect'] 
+0

tr是什麼意思? – Gauls

+0

我添加了XPath的細分視圖 –

+0

Driver.FindElementByXPath(「// tr [td [contains(text(),'MATHEW Joe')]]/td/input [@ name ='chkNSelect']」)。 ()它的工作原理是在第二次拋出錯誤時觸發它FindElementByXPath'不是'OpenQA.Selenium.IWebDriver的成員 – Gauls

相關問題