2015-02-06 37 views
3

我对硒很新。 我从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() 
+0

它是如何不工作?如果它抛出异常,你能编辑你的文章并添加异常吗? – Richard 2015-02-06 18:05:38

回答

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() 
+0

谢谢。这真的很有帮助。有用。但是,它只能点击一次文字。有更多的“加载更多参数”部分点击。我正在找到解决这个问题的办法。另外,当附加参数显示时,源代码不会更新。我想知道是否有一种方法可以在点击后获取页面源代码。 – theteddyboy 2015-02-06 22:36:13

+0

我在这里研究了内容:http://stackoverflow.com/questions/26809954/splinter-or-selenium-can-we-get-current-html-page-after-clicking-a-button 这就是我想要的。谢谢。 – theteddyboy 2015-02-06 23:29:37

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() 
+0

是的,这是我的错。我忘记了btn_more退款。另外,谢谢你对元素和元素的解释。我以前不知道这件事。谢谢。 – theteddyboy 2015-02-06 22:26:30