2013-04-10 62 views
14

使用Selenium IDE,我試圖使用帶有部分標識和元素標題的XPath單擊網頁上的表中的按鈕。我使用的XPath是:單擊包含Selenium IDE中的部分標識和標題的XPath按鈕

xpath=//*[contains(@id, 'ctl00_btnAircraftMapCell')]//*[contains(@title, 'Select Seat')] 

和那整個HTML代碼的按鈕的例子我試着去點擊:

<li id="ctl00_MainContent_repAircraftMap_ctl20_repAircraftMapRow‌​_ctl00_liAircraftMap‌​Cell" class=""> 
    <a id="ctl00_MainContent_repAircraftMap_ctl20_repAircraftMapRow‌​_ctl00_btnAircraftMa‌​pCell" href="javascript:void(0)" seatnumber="20A" mapbindattribute="1124" title="Select Seat 20A" onclick="SeatClick(1124);"></a> 
</li> 

難道我這個構建正確?它不工作!

+0

分享該按鈕的HTML – Amey 2013-04-10 16:24:00

+0

如果您可以在此處格式化代碼,並且合理謹慎地編寫問題以使其儘可能可讀,那麼通常會感謝您的努力。 – halfer 2013-04-10 16:54:50

+0

  • MikeH 2013-04-11 07:07:45

    回答

    35

    現在您已經提供了您的HTML樣本,我們可以看到您的XPath有點不對。雖然它是有效的XPath,但它是邏輯上錯誤。

    你已經有了:

    //*[contains(@id, 'ctl00_btnAircraftMapCell')]//*[contains(@title, 'Select Seat')] 
    

    換算成:

    給我所有有包含ctl00_btnAircraftMapCellID的元素。在這些元素中,獲取任何子元素的title包含Select Seat

    你實際上想要的是:

    //a[contains(@id, 'ctl00_btnAircraftMapCell') and contains(@title, 'Select Seat')] 
    

    換算成:

    給我所有元素有:包含ctl00_btnAircraftMapCell和一個idtitle其中包含Select Seat

    +1

    已經奏效,感謝您的幫助。 – MikeH 2013-04-11 09:00:31

    +1

    這是一個出色解釋的答案。 – tpow 2014-09-18 05:13:23

    +2

    這很可能是堆棧溢出最好的解釋!我從來不知道你可以使用「和」,就像你在xpath表達式中所做的那樣,謝謝你 – dmeehan 2015-07-08 14:13:31

    相關問題