为什么在 Selenium 中使用 add_experimental_option ?

2024-01-11

我试图理解与以下内容非常相似的代码片段:

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
port_number = "127.0.0.1.8888"
chrome_options.add_experimental_option("someAddressName", port_number)

我试图寻找解释,但到目前为止还没有得到任何满意的答案。有人可以解释一下任务吗Options() and add_experimental_option尤其?

谢谢


WebDriver 实现接受他们尝试自动化的浏览器的配置信息的方式是通过一个称为“功能”的概念。当启动会话(启动浏览器)时,用户指定他们希望启动的驱动程序支持哪些功能。这可能包括接受自签名 SSL 证书的能力、浏览器的配置文件设置或任何其他内容。

然而,该模型的挑战之一是它是作为字典实现的,键值对由任意字符串的键和任意类型的对象的值组成。这里有两个潜在的问题。首先,功能名称很容易忘记或输入错误,并且可能并非所有浏览器都支持。而且,在代码实际执行之前不可能知道这一点。至于值,通常,驱动程序期望与其支持的名称关联的值是特定类型,并且同样,这在驱动程序实现之间可能存在很大差异。

输入选项类。这些构造为特定驱动程序可能期望的各种功能提供设置器。它可以强制通过功能字典传递给驱动程序的名称是正确的,并且可以强制值的类型安全。然而,大多数驱动程序实现(Chromium 项目的chromedriver, Mozilla 的geckodriver,微软的MicrosoftWebDriverEdge 浏览器等)不是由 Selenium 项目构建或维护的。可能的情况是,驱动程序提供商发布了一个新的驱动程序版本,该版本了解 Selenium 项目没有时间在该驱动程序的选项类中创建类型安全的设置器的新功能。

因此,在 Selenium 的下一个版本发布之前,用户不会被阻止使用新功能,选项类具有“添加尚无类型安全设置器的附加选项”方法。在 Python 中(您的示例看起来是用 Python 编写的),该方法被称为add_experimental_option。该方法通常旨在暂时使用,直到 Selenium 项目可以推出一个新版本,其中包含驱动程序实现者(在您的示例中为 Chrome 驱动程序)添加的任何新选项的类型安全设置器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 Selenium 中使用 add_experimental_option ? 的相关文章

随机推荐