【问题标题】:Selenium Webdriver not Finding Download LinkSelenium Webdriver 找不到下载链接
【发布时间】:2021-05-27 22:30:21
【问题描述】:

我有以下代码,我试图浏览我的公司网站,抓取一些数据并单击列表中每个人的下载链接。当我尝试点击下载链接时出现错误(点击后会自动下载文件的链接)。

任何想法为什么这不起作用?我得到的错误就像什么都没找到一样。下面发布的代码以及来自网站的代码

from selenium.webdriver import Chrome, ChromeOptions
chrome_options = ChromeOptions()

chrome_options.add_experimental_option("prefs", 
{"download.default_directory": downloads,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True,
"safebrowsing.disable_download_protection": True})

driver = Chrome(ChromeDriverManager().install(), chrome_options=chrome_options)

gameIds = []
for p in people:
    driver.get(base_url + p)
    WebDriverWait(driver, 0.01).until(EC.presence_of_element_located((By.XPATH, '//*[@id="resumeContainer"]/ul/li/div/div[2]/label'))).click()
    gameIds.extend(gameIds_temp)

print(gameIds)
<div _ngcontent-isj-c5="" class="col-md-8 resume-name-container"><label _ngcontent-isj-c5="" class="resume-name pointer" digitaldata-resume="cs Resume_2019.doc>Profile Page">CS Resume_2019.doc</label><!----><p _ngcontent-isj-c5="" class="resumemodified mb-0">Last updated <b _ngcontent-isj-c5=""><!----> 11 months ago
</b></p></div>
<label _ngcontent-isj-c5="" class="resume-name pointer" digitaldata-resume="cs Resume_2019.doc>Profile Page">cs Resume_2019.doc</label>
C:\Users\xx\Desktop\Python\Accelerators\scraper.py:120: DeprecationWarning: use options instead of chrome_options
  driver = Chrome(ChromeDriverManager().install(), chrome_options=chrome_options)
Traceback (most recent call last):
  File "C:\Users\xx\Desktop\Python\Accelerators\scraper.py", line 157, in <module>
    WebDriverWait(driver, 0.01).until(EC.presence_of_element_located((By.XPATH, '//*[@id="resumeContainer"]/ul/li/div/div[2]/label'))).click()
  File "C:\Users\xx\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

【问题讨论】:

  • 这并不是一个真正独立的例子。您使用的是哪个浏览器?您可能没有设置下载目录并禁用下载提示
  • 使用 Chrome - 不知道你所说的其余部分是什么意思......你能澄清一下吗?
  • stackoverflow.com/questions/45645648/… 这是用于 Firefox 但也有类似的命令用于 chrome
  • id resumeContainer 在你的 html sn-p 中是没有的,那么定位器应该如何工作呢?

标签: python selenium


【解决方案1】:
from selenium.webdriver import Chrome, ChromeOptions

chrome_options = ChromeOptions()

chrome_options.add_experimental_option("prefs", 
{"download.default_directory": <your_path>,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True,
"safebrowsing.disable_download_protection": True})

driver = Chrome(chrome_options=chrome_options)

【讨论】:

  • 更新了我收到的错误和新代码 - 它在 .click() 行失败
猜你喜欢
  • 2011-12-04
  • 1970-01-01
  • 2014-01-03
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多