【问题标题】:Selenium Python click a link to javascript in an unordered listSelenium Python 单击无序列表中的 javascript 链接
【发布时间】:2014-07-25 07:42:52
【问题描述】:

我正在尝试单击并激活带有 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">

硒单元测试输出看起来像

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

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

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

这就是我最终解决它的方法..

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

【问题讨论】:

  • 那行不通是什么意思?它是否显示任何错误?

标签: python-2.7 selenium


【解决方案1】:

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

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

【讨论】:

  • 这确实有效,但它没有。它让我在编写爬虫时遇到下一个错误(元素不可见),我找到了解决方法。
猜你喜欢
  • 2021-07-10
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多