XPath Selector Работает нормально с FirefoxDriver, но не работает с HtmlUnitDriver - PullRequest
0 голосов
/ 29 марта 2011

У меня есть код ниже на моей HTML-странице.

<tr id="HL1035569648A" bgcolor="#ffffff">

  <td rowspan="2" align="center" width="40"><input name="product_id" value="1035569648" onclick="syncSA(this,document.inquiry.toggleSA);hlChecked(this,document.inquiry.product_id,2,'#ffffff');" type="checkbox"></td>


  <td rowspan="2" width="90"> <div id="ysop"><a href="http://www.globalsources.com/gsol/I/Induction-cooker/p/sm/1035569648.htm"><img class="imgborder" src="http://akamai.globalsources.com.edgesuite.net/f/593/3445/5d/pdt.static.globalsources.com/IMAGES/PDT/THUMB/648/T1035569648.jpg" alt="Induction Cooker Manufacturers" title="Induction Cooker Manufacturers" onmouseout="showPPOut();" onmouseover="showPPSummary(event,'1035569648',false,rollOvInqURL);" align="left" height="80" hspace="1" vspace="1" width="80"></a> </div></td>

  <td><a href="http://www.globalsources.com/gsol/I/Induction-cooker/p/sm/1035569648.htm" name="1035569648">Induction <b>Cooker</b></a><br>
Induction Cooker with 50/60Hz Rated Frequency, 90 to 230V AC Input Voltages and 7.2kW Maximum Power<br></td>

  <td><a href="http://inductioncooktop.manufacturer.globalsources.com/si/6008838306671/Homepage.htm" title="TOPBAND Induction cookers Division">TOPBAND Induction cookers Division</a><br><a href="http://inductioncooktop.manufacturer.globalsources.com/si/6008838306671/Showroom/3000000149681/ALL.htm">47&nbsp;products</a></td>


  <td rowspan="2">China (mainland)</td>
  <td rowspan="2">
        <div class="space_filler"><a href="javascript:actionInqSingleInqPath('/gsol/GeneralManager?&amp;catalog_id=2000000003844&amp;design=clean&amp;language=en&amp;action=GetInquireNowBasket&amp;page=inquiry/InqForm&amp;template=RFI&amp;inqflow_path=NLI','InquireNow_KW',1035569648)"><img src="http://akamai.globalsources.com.edgesuite.net/f/593/3445/5d/static.globalsources.com/gsol/en/clean/images/ICON-INQUIRE.GIF" border="0" height="13" width="55"></a></div>
        <div class="space_filler"><a href="javascript:void(0);" onclick="javascript:checkIM('/gsol/GeneralManager?&amp;catalog_id=2000000003844&amp;design=clean&amp;language=en&amp;page=im/IMSelection&amp;id=6008838306671&amp;IMSource=productsearch',340,455,'pop',null);"><img src="http://akamai.globalsources.com.edgesuite.net/f/593/3445/5d/static.globalsources.com/gsol/en/clean/images/ICON-CHAT.GIF" alt="Chat with this supplier (Login/Registration required)" title="Chat with this supplier (Login/Registration required)" border="0" height="13" width="55"></a></div>
  </td>
</tr>`

Я хочу получить ссылку и описание

<td><a href="http://www.globalsources.com/gsol/I/Induction-cooker/p/sm/1035569648.htm" name="1035569648">Induction <b>Cooker</b></a><br>
Induction Cooker with 50/60Hz Rated Frequency, 90 to 230V AC Input Voltages and 7.2kW Maximum Power<br></td>`

Я использую ниже XPath:

//Link: http://www.globalsources.com/gsol/I/Induction-cooker/p/sm/1035569648.htm
driver.findElements(By.xpath("//tr[starts-with(@id, 'HL')]/td[3]/a");

//Summary: Induction Cooker with 50/60Hz Rated Frequency, 90 to 230V AC Input Voltages and 7.2kW Maximum Power
driver.findElements(By.xpath("//tr[starts-with(@id, 'HL')]/td[3]");

Примечание: я не могу использовать HL1035569648A full id, потому что есть много строк таблицы, имеющих эти ссылки, и все строки таблицы имеют разные имена классов, но все они начинаются с HL.

Это прекрасно работает с FirefoxDriver, но не работает с HtmlUnitDriver. Кто-нибудь может мне помочь. Я не понимаю проблему.

спасибо!

Ответы [ 2 ]

0 голосов
/ 11 июня 2015

Попробуйте это:

//tr[contains(@id,"HL")]/td[3]/a
0 голосов
/ 07 апреля 2011

Избегайте локаторов XPATH любой ценой!

Вы можете использовать css просто отлично: tr [id ^ = 'hl'] td: eq (2) a

Однако, надеюсь, вам не нужен этот средний бит, и вы можете просто сделать что-то вроде tr [id ^ = 'hl'] a

...