Selenium Python在无序列表中单击指向javascript的链接

时间:2014-07-25 07:42:53

标签: python-2.7 selenium

我正在尝试点击并激活与Selenium的javascript链接。这是一个5星评级小部件。 五星级是下面的确切项目。其他项目,IE 4星没有完全显示。

<div id="percentages_and_ratings">
<div id="percentages">
<div id="rating">
<ul id="personality-rating" class="star-rating profile_rating " onmouseout="Votes.publicStarOut(this)" onmouseover="Votes.publicStarOver(this)">
<li id="current-personality-3198779465475184989-1" class="current-rating" style="width: 0%;"></li>
<li>...
<li>...
<li>...
<li>...
<li>
<a class="five-stars" title="" href="javascript:processVoteNote('vote', 'personality', 5, '222222222222222', false, '', '', Profile.profileHeadingVote);">5</a>
</li>
<li class="cant-tell" style="display: none;">
<li class="click-away">

selenium单元测试输出看起来像

driver.find_element_by_xpath("(//a[contains(text(),'5')])[2]").click()

但这不起作用。使用firebug选择xpath,CSS,HTML也不起作用。有任何想法吗?我已经在这几个晚上了,所以是时候问: - )

我正在使用Selenium web驱动程序和python 2.7

以下是我最终解决问题的方法..

id = self.getID(driver)
script = "$(processVoteNote('vote', 'personality', 5, '"+id+"', false, '', '', Profile.profileHeadingVote));"
driver.execute_script(script)

1 个答案:

答案 0 :(得分:2)

根据您发布的示例HTML, browser.find_element_by_class_name('five-stars').click()应成功选择并点击该链接。如果页面上有多个具有该类名称的元素,则可以使用browser.find_elements_by_class_name('five-stars'),遍历该列表以标识相关链接,然后单击它们。

如果您想使用XPATH搜索,我建议您使用xPath Tester来尝试不同的模式。