在现有的网络驱动程序中设置Chrome选项

时间:2018-10-27 16:11:46

标签: python selenium selenium-webdriver webdriver chrome-options

方案:需要将文件从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()

如果您需要任何其他信息,请告诉我。

谢谢!

1 个答案:

答案 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。您可以通过脚本将下载的文件移至其他位置。