使用selenium单击并查看更多文本

时间:2015-02-06 18:04:11

标签: python python-2.7 selenium selenium-webdriver

我对Selenium很新。 我正在抓取this page的数据。我需要向下滚动页面并单击“加载更多参数”以获取更多文本。这是点击的位置。

<a class="debate-more-btn" href="javascript:void(0);" onclick="loadMoreArguments('15F7E61D-89B8-443A-A21C-13FD5EAA6087');">
      Load More Arguments
</a>

我已经尝试过这段代码,但它不起作用。我是否需要更多代码才能找到它(我认为1已经告诉了要点击的位置)。你有什么建议吗?先感谢您。

[1] btn_moreDebate = driver.find_elements_by_class_name("debate-more-btn")
[2] btn.click()

2 个答案:

答案 0 :(得分:3)

找到链接by link text,移至元素并点击:

from selenium.webdriver.common.action_chains import ActionChains

link = driver.find_element_by_link_text('Load More Arguments')
ActionChains(browser).move_to_element(link).perform()
link.click()

如果在查找元素时遇到异常,则可能需要使用Explicit Wait

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

link = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, "Load More Arguments")))
ActionChains(browser).move_to_element(link).perform()
link.click()

答案 1 :(得分:2)

如果我正确理解你的代码,我可以看到一些错误。
1.您正在使用find_elements_by_class_name。我建议改用find_element_by_class_nameelements返回一个列表,在只有一个元素的情况下不需要 2.您使用btn_moreDebate作为find_elements结果的持有者,然后与btn进行互动。

您应该能够执行查找并单击一个操作:

driver.find_element_by_class_name("debate-more-btn").click()