Насколько мне известно, WebDriver не имеет возможности доступа к диалоговым окнам загрузки IE, представленным браузерами, когда вы нажимаете на ссылку или кнопку загрузки.Но мы можем обойти эти диалоговые окна, используя отдельную программу под названием " wget ".
, мы можем использовать программу командной строки и этот wget для загрузки файла.Код как показано ниже (следующий код является кодом C #, вы можете преобразовать его в Python):
var options = new InternetExplorerOptions()
{
InitialBrowserUrl = URL, // "http://demo.guru99.com/test/yahoo.html";
IntroduceInstabilityByIgnoringProtectedModeSettings = true
};
//IE_DRIVER_PATH: @"D:\Downloads\webdriver\IEDriverServer_x64_3.14.0";
var driver = new InternetExplorerDriver(IE_DRIVER_PATH, options);
driver.Navigate();
Thread.Sleep(5000);
//get the download file link.
String sourceLocation = driver.FindElementById("messenger-download").GetAttribute("href");
Console.WriteLine(sourceLocation);
//using command-line program to execute the script and download file.
String wget_command = @"cmd /c D:\\temp\\wget.exe -P D:\\temp --no-check-certificate " + sourceLocation;
try
{
Process exec = Process.Start("CMD.exe", wget_command);
exec.WaitForExit();
Console.WriteLine("success");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
driver.Close(); // closes browser
driver.Quit(); // closes IEDriverServer process
Более подробно, вы можете обратиться к этой статье .
Редактировать : Поскольку вы используете python, вы можете использовать метод find_element_by_id, чтобы найти элемент, а затем использовать метод get_attribute, чтобы получить значение.Более подробно, вы можете проверить эти статьи:
Получить атрибут элемента Python + Selenium для чайников вроде меня API WebDriver Получить значение поля ввода, используя Selenium (Python)