Selenium 无限期运行?

问题描述 投票:0回答:1

我正在尝试在 Python 中运行 Selenium 以从 Genius.com 抓取歌词。由于某种原因,我的代码在浏览器保持打开状态的情况下无限期运行。这是我正在运行的代码:

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

timeout = 10
driver = launchBrowser(path)

# Get Body Text
body = EC.presence_of_element_located(
    By.CLASS_NAME, "ReferentFragmentdesktop__Highlight-sc-110r0d9-1"
)
WebDriverWait(driver, timeout).until(body)
paragraphs = driver.find_elements(
    By.CLASS_NAME, "ReferentFragmentdesktop__Highlight-sc-110r0d9-1"
)
driver.quit()

我在代码的前面定义了

launchBrowser
和路径,对此没有任何问题。我希望我的程序在
WebDriverWait
达到超时时间或代码达到
driver.quit()
时关闭。由于某种原因,这两种情况都没有发生,并且我的浏览器窗口永远保持打开状态。任何帮助或建议将不胜感激。

我尝试过抓取其他网站,这些网站似乎工作正常,但由于某种原因,这段代码陷入了永久循环,我不确定为什么。我正在使用 Chrome。

python selenium-webdriver
1个回答
0
投票

我猜

launchBrowser(path)
是一个为您打开浏览器的功能。我也猜测 未找到
paragraphs = driver.find_elements( By.CLASS_NAME, "ReferentFragmentdesktop__Highlight-sc-110r0d9-1" )

有了

from selenium.webdriver import Chrome
,就有
Chrome().implicitly_wait()
...

defimplicitly_wait(self, time_to_wait: float) -> None
设置粘性 隐式等待找到元素的超时,或命令 完全的。每个会话只需调用该方法一次。到 设置调用execute_async_script的超时,请参阅 设置脚本超时。

这将等待几秒钟,如果找不到元素或命令无法完成,则会引发异常。

© www.soinside.com 2019 - 2024. All rights reserved.