如何为Firefox设置Selenium Python环境?
我正在使用Firefox 50,Selenium 3和Python 3.5。我尝试了许多方法,包括将二进制文件和geckodriver复制到环境变量PATH中等。
我正在使用Firefox 50,Selenium 3和Python 3.5。我尝试了许多方法,包括将二进制文件和geckodriver复制到环境变量PATH中等。
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()
pip install selenium
或者一些IDE(比如PyCharm)会提供安装库的选项,只需导入Selenium即可)在Windows中安装Python:https://www.python.org/downloads/
然后从命令行运行pip install:pip install selenium
下载Gecko / Chrome / Internet Explorer驱动程序,并将driver.exe路径添加到PATH环境变量中。因此,在运行Selenium driver.Firefox() / driver.Chrome()方法时需要设置路径。
pip install webdriver-manager
from selenium import webdriver
firefox_driver = webdriver.Firefox()
# "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
如果你正在使用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()