【问题标题】:Use selenium to click and view more text使用 selenium 点击查看更多文字
【发布时间】:2015-04-06 23:05:52
【问题描述】:

我对 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()

【问题讨论】:

  • 怎么不行?如果它抛出异常,您可以编辑您的帖子并添加异常吗?

标签: python python-2.7 selenium selenium-webdriver


【解决方案1】:

找到链接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()

【讨论】:

  • 谢谢。这真的很有帮助。有用。但是,它只单击文本一次。还有更多“加载更多参数”部分可供单击。我正在寻找解决这个问题的方法。此外,当显示附加参数时,源代码不会更新。我想知道是否有一种方法可以在点击后获取页面源。
  • 我研究了这里的内容:stackoverflow.com/questions/26809954/…这是我想要的。谢谢。
【解决方案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()

【讨论】:

  • 是的,这是我的错。我忘记了 btn_moreDebate。另外,感谢您对元素和元素的解释。我以前不知道这件事。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多