复制 Selenium Webdriver 的实例

Qde*_*lta 2 html python selenium

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

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

每个<li></li>都是我想要点击的链接,然后收集该网站上的数据。

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

browser = webdriver.PhantomJS("phantomjs")
browser2 = browser
Run Code Online (Sandbox Code Playgroud)

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

我想复制browser2一份browser,这样我就可以browser2随时重置。

Ami*_*thi 6

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

import copy

browser2 = copy.copy(browser)
Run Code Online (Sandbox Code Playgroud)

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

来自复制文档:

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

在文档中阅读有关复制模块的更多信息