方案:需要将文件从Web层次结构下载到相同层次结构下的本地驱动器。
示例网络层次结构:
Parent 1:
Child 1:
*File 1
Child 2:
*File 2
下载文件1时,它应存储在路径1中-“ C:\ .... \ Downloads \ Parent 1 \ Child 1 \”
下载文件2时,它应存储在路径2中-“ C:\ .... \ Downloads \ Parent 1 \ Child 2 \”
问题:
当我在setUp()中首次初始化webdriver并下载“文件1”时,在chrome webdriver中保留“ C:.... \ Downloads \ Parent 1 \ Child 1 \”的下载路径并下载“文件1”时,它将下载在预期的文件夹中。 但是,当我在chrome webdriver中设置下一个“ C:.... \ Downloads \ Parent 1 \ Child 2 \”下载路径以在其中下载文件2时,它会打开另一个chrome浏览器,因为我正在使用另一个webdriver来设置路径2。
必需的解决方案:
我想使用现有的webdriver设置不同的chrome下载路径或您可以想到的任何其他解决方法。
当前代码:
def setUp(self):
browser = webdriver.Chrome(chromedriver_path, option_with_path_1_set)
def test_downloadFiles(self):
\*code to download first file\*
driver = webdriver.Chrome(chromedriver_path, option_with_path_2_set)
\*code to download second file\*
def tearDown(self):
browser.quit()
如果您需要任何其他信息,请告诉我。
谢谢!
答案 0 :(得分:1)
使用 ChromeOptions 配置 ChromeDriver 的实例以启动新的 Chrome浏览器会话时, ChromeDriver < / em>在 ChromeDriver 的整个生存期中保持不变,并且保持不可编辑
即使您能够提取 ChromeDriver 和 ChromeSession 属性,例如会话ID , Cookies 和发起的浏览会话中的其他会话属性,您仍然无法更改的那些属性ChromeDriver 。
一种更干净的方法是在driver.quit()
方法中调用 tearDown(){}
来关闭和销毁 ChromeDriver 和 Chrome浏览器实例,然后使用新的配置集跨一组新的 ChromeDriver 和 Chrome浏览器实例
在这里您可以找到有关How can I reconnect to the browser opened by webdriver with selenium?的相关讨论
作为@KirilS。您可以通过脚本将下载的文件移至其他位置。