为什么在 Selenium 中使用 add_experimental_option?

第零

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

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()add_experimental_option特别?

谢谢你

吉姆·埃文斯

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Selenium为什么不使用element的名称

来自分类Dev

为什么我们使用WebDriver代替Selenium IDE?

来自分类Dev

为什么我们使用WebDriver而不是Selenium IDE?

来自分类Dev

为什么 selenium chromedriver 使用的资源比普通 chrome 少

来自分类Dev

为什么我不能在g ++ 4.9.2中使用<experimental / filesystem>?

来自分类Dev

为什么Selenium中出现错误“为什么不赞成使用类型”?

来自分类Dev

为什么要尝试!()和?在不返回Option或Result的函数中使用时无法编译?

来自分类Dev

在类中使用 Selenium

来自分类Dev

add_experimental_option()缺少1个必需的位置参数:“值”

来自分类Dev

为什么在jQuery中使用`add()`时选择范围未扩展

来自分类Dev

为什么或为什么不在C ++中使用memset?

来自分类Dev

无法使用add()添加jvmArgs,为什么?

来自分类Dev

为什么在Ruby中使用枚举器

来自分类Dev

为什么要在golang中使用组合?

来自分类Dev

为什么在属性声明中使用<Optional>?

来自分类Dev

为什么在Lua中使用本地需求?

来自分类Dev

为什么在JavaScript中使用Object()!= Object()?

来自分类常见问题

在案例陈述中使用{}。为什么?

来自分类Dev

为什么要在MVC中使用LabelFor?

来自分类Dev

为什么在Mongo中使用ElasticSearch?

来自分类Dev

为什么在JpaTransactionManager中使用jpadialect

来自分类Dev

为什么在ListView中使用Inflater

来自分类Dev

为什么在此示例中使用q?

来自分类Dev

为什么要在结构中使用malloc?

来自分类Dev

为什么在Controller批注中使用@Component

来自分类Dev

为什么要在Flux中使用“动作”?

来自分类Dev

为什么要在FRP中使用行为

来自分类Dev

为什么在函数原型中使用“ [*]”而不是“ []”?

来自分类Dev

为什么要在laravel中使用npm?

Related 相关文章

  1. 1

    Selenium为什么不使用element的名称

  2. 2

    为什么我们使用WebDriver代替Selenium IDE?

  3. 3

    为什么我们使用WebDriver而不是Selenium IDE?

  4. 4

    为什么 selenium chromedriver 使用的资源比普通 chrome 少

  5. 5

    为什么我不能在g ++ 4.9.2中使用<experimental / filesystem>?

  6. 6

    为什么Selenium中出现错误“为什么不赞成使用类型”?

  7. 7

    为什么要尝试!()和?在不返回Option或Result的函数中使用时无法编译?

  8. 8

    在类中使用 Selenium

  9. 9

    add_experimental_option()缺少1个必需的位置参数:“值”

  10. 10

    为什么在jQuery中使用`add()`时选择范围未扩展

  11. 11

    为什么或为什么不在C ++中使用memset?

  12. 12

    无法使用add()添加jvmArgs,为什么?

  13. 13

    为什么在Ruby中使用枚举器

  14. 14

    为什么要在golang中使用组合?

  15. 15

    为什么在属性声明中使用<Optional>?

  16. 16

    为什么在Lua中使用本地需求?

  17. 17

    为什么在JavaScript中使用Object()!= Object()?

  18. 18

    在案例陈述中使用{}。为什么?

  19. 19

    为什么要在MVC中使用LabelFor?

  20. 20

    为什么在Mongo中使用ElasticSearch?

  21. 21

    为什么在JpaTransactionManager中使用jpadialect

  22. 22

    为什么在ListView中使用Inflater

  23. 23

    为什么在此示例中使用q?

  24. 24

    为什么要在结构中使用malloc?

  25. 25

    为什么在Controller批注中使用@Component

  26. 26

    为什么要在Flux中使用“动作”?

  27. 27

    为什么要在FRP中使用行为

  28. 28

    为什么在函数原型中使用“ [*]”而不是“ []”?

  29. 29

    为什么要在laravel中使用npm?

热门标签

归档