2016-04-19 88 views
2

我一直在XPATH慢慢變好,但每次我覺得我有它(至少在基本水平),我認爲是顯而易見的東西決定扔我。XPath類是和文本包含

試圖單擊列表項:

<li class="league_check " id="lg_chk_br_1_l_22953" onclick="BranchWindow.showLeague(1,22953);"> <img leagueid="22953" src="/i/none_v.gif" width="12" height="12" onclick="BranchWindow.switchLeague(1,22953); cancelBubble(event);">Champions League </li> 

有了這個:

eachleague = "Champions League" 
link = Driver.find_elements_by_xpath("//li[contains(@class, 'league_check ') and text() = '%s']" % eachleague) 

我雙重檢查,一切都實際加載等等......而且(據我XPATH的理解)這應該找到列表項。

任何人都可以闡明我失蹤的東西嗎?

回答

2

我敢肯定,你可以責怪多餘的空間裏面的文字。無論是規範:

//li[contains(@class, 'league_check ') and normalize-space(.) = '%s']" % eachleague 

或者,使用:

//li[contains(@class, 'league_check ') and contains(., '%s')]" % eachleague 

而且,由於你正在使用containsclass屬性,你可以刪除該league_check後尾隨空格。


或者,你可以依靠的「聯盟號」 S,是這樣的:

leagues = { 
    "Champions League": 22953, 
    # more leagues 
} 
league_id = leagues[eachleague] 
link = Driver.find_elements_by_xpath("//li[contains(@class, 'league_check') and img/@leagueid = '%d']" % league_id) 
+0

顯然沒有對我多快能接受的答案是有限的。我想這是一個我不應該問的標誌。但是,這是完美的,我希望我發現它。感謝您抽出寶貴的時間! – PoweredByCoffee