点击按钮在selenium + scrapy中不起作用

6g8kf2rb  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(174)

我想用scrapy + selenium抓取新闻文章的链接。我使用的网站使用了一个“加载更多”按钮,所以我显然希望selenium点击这个按钮来加载所有文章。我已经寻找过类似的问题,并尝试了各种选项,如

element = driver.find_element(By.XPATH, value='//*[@id="fusion-app"]/main/div/div/div/div/div[4]/div/div/button')
driver.execute_script("arguments[0].click();", element)

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".ais-InfiniteHits-loadMore")))
ActionChains(driver).move_to_element(element).click().perform()

我还在中间插入了一些print语句来检查它是否运行了代码,这看起来工作得很好;我认为这只是一个按钮没有被定位/点击的问题。
这是按钮btw的html:

<button class="ais-InfiniteHits-loadMore">Load more </button>

当我打印element时,得到的结果是:<selenium.webdriver.remote.webelement.WebElement (session="545716eef622a12bdbeddef99e02bdef", element="551741ec-4616-4bd4-b8fd-57c2f4bffb00")>
有人能帮我吗?先谢谢你。

ugmeyewa

ugmeyewa1#

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
driver.maximize_window()
wait = WebDriverWait(driver, 30)
driver.get('https://www.businessoffashion.com/search/?q=Louis+Vuitton&f=Articles%2CFashion+Shows%2CNews')
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button.ab-close-button'))).click()
elem=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".ais-InfiniteHits-loadMore")))
driver.execute_script("arguments[0].click()", elem)

当你可以用javascript点击元素时,你会遇到两个不同的错误,一个是弹出窗口,另一个是元素点击界面。
汇入:

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

相关问题