簡體   English   中英

無法在Python中使用Selenium與對話框進行交互

[英]Unable to interact with dialog box using selenium in Python

我在使用“ Firefox 33”的“ Selenium”和“ Windows 7 64 bit”計算機上使用“ Python-3.4.1 32 bit”。 提供必要的憑據后,我試圖自動從受保護的網站下載“ CSV”文件。 我已經編寫了所需的代碼以導航到用於啟動文件下載的正確元素,但是當Firefox給出下載框(對話框標題:打開export.csv,“打開方式”和“保存文件”選項為以“確定”和“取消”為按鈕的單選按鈕)。 我希望自動下載文件,為此,我嘗試了以下代碼,但未成功:

from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.dir", "C:\\Users\\arun\\Downloads")
fp.set_preference("browser.download.downloadDir", "C:\\Users\\arun\\Downloads")
fp.set_preference("browser.download.defaultFolder", "C:\\Users\\arun\\Downloads")
fp.set_preference('browser.helperApps.neverAsk.saveToDisk',"text/csv")
fp.set_preference("browser.helperApps.neverAsk.openFile", "CONTENT-TYPE")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","CONTENT-TYPE")

driver = webdriver.Firefox(fp)
driver.get("http://website-url.com")

然后單擊按鈕開始下載。 但是,它仍然顯示對話框。 我什至嘗試將其作為警報處理並嘗試:

alert = driver.switch_to_alert()
alert.accept()

但這總是給我們一個警報未發現的例外,這使我得出結論,它畢竟可能不是JavaScript功能,而是Web元素。

我如何做才能在沒有對話框交互的情況下自動下載此文件(在Google Chrome瀏覽器中的處理方式)

感謝您的幫助和寶貴的時間!

您將browser.helperApps.neverAsk.saveToDisk設置為text/csv ,然后兩text/csv其設置為CONTENT-TYPE

根據此頁面,此首選項被解釋為MIME類型的列表。 CONTENT-TYPE不是有效的MIME類型,它沒有其他特殊含義。 您要刪除對browser.helperApps.neverAsk.saveToDisk的第二次分配。 您可能也不想分配給browser.helperApps.neverAsk.openFile

正確設置好browser.helperApps.neverAsk.saveToDisk ,您就不必擔心接受對話框了。

Selenium不允許與對話框窗口進行交互(例如,另存為對話框窗口)。 selenium是一個Web驅動程序,因此它僅與瀏覽器交互。

我建議使用pywinauto和pywin32。 它是Windows自動化的一種形式。

問題是硒將在對話框窗口打開時“暫停”,因此要實現這一點,我知道的唯一方法是編寫兩個腳本。 第一個是selenium / web自動化過程,另一個是使用pywinauto和/或pywin32的Windows自動化過程。

然后,您可以通過以下方式在selenium / web自動化腳本的末尾調用Windows自動化腳本:

import subprocess

subprocess.call("python C:\Python27\Scripts\windowsAutomation.py", shell=True)

還有一件事,我正在使用FireFox 31

如果其他所有方法都失敗,則可以嘗試使用Chrome chrome瀏覽器。 Chrome不會詢問下載位置,但您必須啟用多個文件下載並設置保存位置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM