有没有办法让Python中的Selenium检查下载窗口中的内容?

时间:2019-05-24 18:20:33

标签: python selenium google-chrome

我有一个Python代码,使用Selenium Chrome驱动程序来单击列表中的多个标签。

每个窗口都会打开一个新窗口,可以立即下载文件,这一切都很好;但是,其中一些新窗口将有两个文件作为下载选项,因此只有在单击下一个标记后,才下载文件。

我遇到的问题是,由于下载是自动的,我无法让Selenium知道如何“检查”它是否应该仅关闭窗口,还是应该再次单击以开始下载。

我试图做一个find_elements_by_(所有可能的方法)来让驱动程序检查是否有任何下载链接,但是如果下载是自动的,则驱动程序只会继续运行。它不会产生错误或任何错误,而只是永久运行。如果我关闭实际的下载窗口,则会显示结果。

from selenium import webdriver

browser = webdriver.Chrome('chromedriver.exe', options=options)

#options are set for Chrome to download a PDF file without viewing it first.

main_window = browser.window_handles[0]

#this is the initial click to open the download window 
browser.find_elements_by_css_selector('selector path').click()

#this is to have the driver activate the new window

pops = browser.window_handles[1]
browser.switch_to.window(pops)

#attempt to find the <a> tag with the download item
if browser.find_elements_by_css_selector('selector path') != []:
   time.sleep(1)
   browser.find_elements_by_css_selector('selector path').click()
   browser.close()
   browser.switch_to.window(main_window)
   #this works fine when there are tags in the window. No problems
else:
   time.sleep(1)
   browser.close()
   browser.switch_to.window(main_window)
   #code can't get to the "else" because the driver gets stuck checking for the selector perpetually.

我期望Selenium检查窗口是否包含内容,如果没有,请延迟一秒钟并关闭窗口。如果有内容,请单击链接进行下载;但是,驱动程序只是永久搜索选择器。

编辑:忘了提起自动开始下载的窗口,除了html,script和head标记之外,没有任何内容。

即使我尝试运行find_element_by_tag,Selenium实际上也找不到内容。

0 个答案:

没有答案