我在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的理解)这应该是找到列表项。
任何人都可以了解我所缺少的东西吗?
答案 0 :(得分:3)
我很确定你可以责怪文本中的额外空间。要么标准化:
//li[contains(@class, 'league_check ') and normalize-space(.) = '%s']" % eachleague
或者,使用contains()
:
//li[contains(@class, 'league_check ') and contains(., '%s')]" % eachleague
并且,由于您使用contains
作为class
属性,因此您可以在league_check
后删除该尾随空格。
或者,您可以依赖“联盟身份证”,例如:
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)