我有一个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实际上也找不到内容。