完成下载后如何关闭浏览器?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get(any_url)
browser.find_elements_by_xpath('//input[@value="Download"]').click()
# The program start downloading now.
# HERE WHAT IS THE CODE?
browser.quit()
我想在完成下载后关闭浏览器。
答案 0 :(得分:2)
您可能希望在关闭浏览器之前使用下面的代码。
time.sleep(5)
#在关闭浏览器之前,有时间完成任务。您
可能会将秒数增加到10或15,基本上是时间量
需要下载,否则进入下一步
立即
browser.quit()
答案 1 :(得分:1)
您可以使用pause命令:
pause ( waitTime )
等待指定的时间(以毫秒为单位)
http://release.seleniumhq.org/selenium-core/1.0/reference.html#pause
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get(any_url)
browser.find_elements_by_xpath('//input[@value="Download"]').click()
# The program start downloading now.
pause (10000) # pause/sleeps for 10 seconds
browser.quit()
答案 2 :(得分:1)
这是我在C#上做的另一种方式。也许你可以使用相同的技术并将其应用于python。
public static string GetRequest(string url, bool isBinary = false) {
// binary is the file that will be downloaded
// Here you perform asynchronous get request and download the binary
// Python guide for GetRequest -> http://docs.python-requests.org/en/latest/user/quickstart/
}
browser.webdriver.Firefox();
browser.get(any_url);
elem = browser.findElement("locator");
GetRequest(elem.getAttribute('href'), true); // when this method is done, you expect the get request is done
browser.quit();
答案 3 :(得分:0)
我使用的技巧是打开下载管理器页面,并期待一个表明下载已完成的元素。遵循使用的 Python 代码:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
...
# Wait until the download finish. This code just works for one single download at time on Firefox.
# browser.execute_script('window.open();')
# ActionChains(browser).key_down(Keys.COMMAND).send_keys('t').key_up(Keys.COMMAND).perform()
browser.get('about:downloads')
# files = browser.find_elements_by_class_name('download-state')
WebDriverWait(browser, URL_LOAD_TIMEOUT).until(EC.presence_of_element_located((By.CLASS_NAME, 'downloadIconShow')))
# 'downloadIconCancel'
browser.close()
broswer.quit()
这种方法的问题是它可能依赖于 Firefox 版本,如果 Mozilla 更改该下载管理器页面。