python - 更改现有网络驱动程序中的 ChromeOptions
问题描述
场景:需要将文件从 Web 层次结构下载到同一层次结构下的本地驱动器。
示例 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\”下载路径时,它会下载到预期的文件夹中。但是当我在 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()
如果您需要任何其他信息,请告诉我。
提前致谢!
解决方案
当您通过ChromeOptions配置ChromeDriver的实例以启动新的Chrome 浏览器时,配置会被烘焙到chromedriver可执行文件中,该可执行文件将在WebDriver的生命周期内持续存在并保持不可编辑。
即使您能够从启动的浏览会话中提取ChromeDriver和ChromeSession属性,例如Session ID、Cookies和其他会话属性,您仍然无法更改ChromeDriver的这些属性。
driver.quit()
一种更简洁的方法是调用tearDown(){}
方法来优雅地关闭和销毁ChromeDriver和Chrome 浏览器实例,然后使用新的配置集跨越一组新的ChromeDriver和Chrome 浏览器实例。
tl; 博士
您可以在以下位置找到一些相关的讨论:
推荐阅读
- node.js - 发送流作为 axios 请求的响应
- c# - C# Linq 表达式无法翻译
- c# - 在 Unity 上运行 Firebase 身份验证时出现错误 CS0012
- c# - 实体框架 Reverse.POCO.Generator 错误
- sorting - 如何使一个单元格根据另一个单元格移动?
- r - 如何获取在 r 中具有 NA 的列数?
- javascript - 使用 Https 进行集成,然后将库与 android 应用程序一起使用
- angularjs - 如何在AngularJS中组件的ng-option中加载值
- c# - 如何将用户设置值存储在数组中?
- javascript - ComponentDidMount 本地状态更新