使用selenium点击查看更多文字
Use selenium to click and view more text
我对 Selenium 很陌生。
我正在从 this page 抓取数据。我需要向下滚动页面并单击 "Load More Arguments" 以获取更多文本。这是要单击的位置。
<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()
找到 link 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. 您正在使用 find_elements_by_class_name
。我建议改用 find_element_by_class_name
。 elements
returns 一个列表,在只有一个元素的情况下不需要。
2. 您使用 btn_moreDebate
作为 find_elements
结果的持有者,但随后与 btn
.
进行交互
您应该能够一次执行查找和单击操作:
driver.find_element_by_class_name("debate-more-btn").click()
我对 Selenium 很陌生。 我正在从 this page 抓取数据。我需要向下滚动页面并单击 "Load More Arguments" 以获取更多文本。这是要单击的位置。
<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()
找到 link 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. 您正在使用 find_elements_by_class_name
。我建议改用 find_element_by_class_name
。 elements
returns 一个列表,在只有一个元素的情况下不需要。
2. 您使用 btn_moreDebate
作为 find_elements
结果的持有者,但随后与 btn
.
您应该能够一次执行查找和单击操作:
driver.find_element_by_class_name("debate-more-btn").click()