如何为Firefox设置Selenium Python环境?

17
如何为Firefox设置Selenium Python环境?
我正在使用Firefox 50,Selenium 3和Python 3.5。我尝试了许多方法,包括将二进制文件和geckodriver复制到环境变量PATH中等。

1
  1. 在您的计算机上下载并安装Firefox(如果您尚未这样做)。
  2. 在命令行中运行“pip install selenium”(如果您尚未这样做)。
  3. 编写您的代码。
- barak manos
5个回答

24
测试机应该安装Selenium v.3.0.2,Firefox v.51.0.1(最新版本)和geckodriver v.0.14。如果您使用Linux,请执行以下步骤:在GitHub上查找最新版本(链接1)(或从API获取),并将wget链接替换为该链接。下载和安装过时的版本可能会导致“错误”的行为。
apt-get update
apt-get install firefox
pip3 install selenium==3.0.2
wget https://github.com/mozilla/geckodriver/releases/download/vX.XX.0/geckodriver-vX.XX.0-linuxXX.tar.gz -O /tmp/geckodriver.tar.gz \
  && tar -C /opt -xzf /tmp/geckodriver.tar.gz \
  && chmod 755 /opt/geckodriver \
  && ln -fs /opt/geckodriver /usr/bin/geckodriver \
  && ln -fs /opt/geckodriver /usr/local/bin/geckodriver

从可用的压缩预构建二进制文件中选择适合您操作系统的版本。

以下是一个运行示例:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://google.com')
print(driver.title)
driver.quit()

11
据我所了解,您想使用Python开发,使用Selenium库,并使用Firefox webdriver进行工作。
  1. 安装Python(Python 3已经包含pip)
  2. 安装Selenium(pip install selenium或者一些IDE(比如PyCharm)会提供安装库的选项,只需导入Selenium即可)
  3. 下载Mozilla webdriver
  4. 享受吧!

1
  1. 在Windows中安装Python:https://www.python.org/downloads/

  2. 然后从命令行运行pip install:pip install selenium

  3. 下载Gecko / Chrome / Internet Explorer驱动程序,并将driver.exe路径添加到PATH环境变量中。因此,在运行Selenium driver.Firefox() / driver.Chrome()方法时需要设置路径。


1
自从Selenium 4.6.0版本开始,根据博客中的说明,您无需手动安装Selenium Manager(webdriver-manager),因为它已经包含在Selenium中。
pip install webdriver-manager

自从Selenium 4.11.0版本以来,下面的代码基本上就足够了,因为Selenium Manager可以自动发现您计算机上安装的浏览器版本,然后根据博客自动下载适合该版本的驱动程序。
from selenium import webdriver

firefox_driver = webdriver.Firefox()

以下示例可以使用Firefox、Selenium、pytest-django和Django来测试Django Admin。*我的回答解释了如何使用多个无头浏览器(Chrome、Microsoft Edge和Firefox)、Selenium、pytest-django和Django来测试Django Admin。
# "tests/test_1.py"

import pytest
from selenium import webdriver
from django.test import LiveServerTestCase

@pytest.fixture(scope="class")
def firefox_driver_init(request):
    firefox_driver = webdriver.Firefox()
    request.cls.driver = firefox_driver
    yield
    firefox_driver.close()

@pytest.mark.usefixtures("firefox_driver_init")
class Test_URL_Firefox(LiveServerTestCase):
    def test_open_url(self):
        self.driver.get(("%s%s" % (self.live_server_url, "/admin/")))
        assert "Log in | Django site admin" in self.driver.title

或者:

# "tests/conftest.py"

import pytest
from selenium import webdriver

@pytest.fixture(scope="class")
def firefox_driver_init(request):
    firefox_driver = webdriver.Firefox()
    request.cls.driver = firefox_driver
    yield
    firefox_driver.close()

# "tests/test_1.py"

import pytest
from django.test import LiveServerTestCase

@pytest.mark.usefixtures("firefox_driver_init")
class Test_URL_Firefox(LiveServerTestCase):
    def test_open_url(self):
        self.driver.get(("%s%s" % (self.live_server_url, "/admin/")))
        assert "Log in | Django site admin" in self.driver.title

0

如果你正在使用Ubuntu和最新的Firefox,你可能会遇到一些问题,因为现在Firefox已经捆绑在Snap中。

要解决无法连接到Firefox的驱动程序问题,您需要使用与Snap捆绑的驱动程序。

我在这里提供了一个准备好的示例:https://github.com/beliaev-maksim/firefox-selenium

然而,为了快速访问,这是conftest.py的内容,用于快速设置驱动程序固定装置。

import pytest
from selenium import webdriver

from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service


@pytest.fixture(scope='session')
def driver(request):
    """Set up webdriver fixture."""
    options = Options()
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')

    service = Service(executable_path="firefox.geckodriver")
    driver = webdriver.Firefox(options=options, service=service)
    driver.set_window_size(1920, 1080)
    driver.maximize_window()
    driver.implicitly_wait(10)

    yield driver
    driver.quit()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接