我想在Python中使用selenium来自动化下载过程。但目前的问题是,我实际上可以使用xpath访问正确的url(pdf文件所在的位置),但是由于OS的拨号框,我无法下载这些文件。我找到了一些建议使用webdriver.FirefoxProfile().set.preference的解决方案。但是,由于我需要使用selenium多次单击该网站以到达正确的页面,因此无法在程序开始时直接使用set.preference设置url。你能帮我把set.preference集成到我现有的程序中吗?非常感谢你!!在
如你所见,网站需要认证。在
以下是我当前的代码:from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import unittest
import os
class LoginTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.get("myinitialurl")
def test_Login(self):
driver=self.driver
emailFieldID="userNameInput"
passFieldID="passwordInput"
loginButtonID="submitButton"
BBButton="(//a[contains(@href,'blackboard')])"
coursebutton="(//a[contains(@href,'Course&id=_4572_1&url')])[1]"
docbutton="(//a[contains(@href,'content_id=_29867_1')])"
conbutton="(//a[contains(@href,'content_id=_29873_1')])"
paperbutton="(//a[contains(@href,'/xid-26243_1')])"
emailFieldElement=WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id(emailFieldID))
passFieldElement=WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id(passFieldID))
loginButtonElement=WebDriverWait(driver,10).until(lambda driver:driver.find_element_by_id(loginButtonID))
emailFieldElement.clear()
emailFieldElement.send_keys("username")
passFieldElement.clear()
passFieldElement.send_keys("password")
loginButtonElement.click()
BBElement=WebDriverWait(driver,50).until(lambda driver:driver.find_element_by_xpath(BBButton))
BBElement.click()
WebDriverWait(driver, 50).until(lambda driver: len(driver.window_handles) == 2)
window_after = driver.window_handles[1]
driver.switch_to.window(window_after)
courseElement=WebDriverWait(driver,50).until(lambda driver:driver.find_element_by_xpath(coursebutton))
courseElement.click()
之后,通常我应该打开一个pdf文件在网站和拨号箱。我想下载这个文件。在
代码设置首选项我发现如下:
^{pr2}$
所以我的问题是如何将第二部分集成到第一个代码中,以便下载最后一次单击所触发的内容。在
否则,你有其他更简单的解决方案吗??在
非常感谢!在