【问题标题】:Copy instance of Selenium Webdriver复制 Selenium Webdriver 的实例
【发布时间】:2017-11-29 16:05:33
【问题描述】:

我目前正在使用 Python (3.6.3) Selenium 访问网站并从中获取数据。 该网站包含如下部分:

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>

每个&lt;li&gt;&lt;/li&gt; 都是我要点击的链接,然后在该网站上收集数据。

我的解决方案是加载主页, 然后复制它的会话,点击一个链接, 然后再次复制会话并单击下一个链接。

browser = webdriver.PhantomJS("phantomjs")
browser2 = browser

这就是我想做的,但是当我这样做时,browser2 指向 browser,所以每当我更改 browser2browser 就会更改。

我想将browser2 复制为browser,以便我可以随时重置browser2

【问题讨论】:

  • 我不完全确定这里的问题,但我想你希望浏览所有链接,你不需要一个新的 webdriver 实例化,没有进入并行性你可以简单转到第一个链接,例如使用 browser.back() 并选择一个新链接,等等冲洗并重复。

标签: python html selenium


【解决方案1】:

您将浏览器分配给 broswer2,browser2 本质上是对浏览器对象的引用,因此 broswer2 和 browser 都指向同一个对象。解决此问题的方法是使用 Python 的标准复制模块

import copy

browser2 = copy.copy(browser)

现在两个对象都可以独立修改了

来自副本文档:

Python 中的赋值语句不会复制对象,它们会创建 目标和对象之间的绑定。对于集合是 可变的或包含可变的项目,有时需要一个副本,所以一个 可以更改一个副本而不更改另一个副本。该模块提供 通用的浅拷贝和深拷贝操作

阅读更多关于复制模块here in docs

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-12-13
  • 2015-08-04
  • 2017-04-09
  • 2022-10-07
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
相关资源
最近更新 更多