web-dev-qa-db-ja.com

Python SeleniumでFirefoxのプロファイルを読み込む方法は?

Python SeleniumをWindowsマシンで動作させようとしています。Firefox、Selenium、Geckodriverの最新バージョンにアップグレードしましたが、それでも以下のエラーが発生します:

Pythonスクリプト

from Selenium import webdriver
driver = webdriver.Firefox()

エラー

Traceback (most recent call last):
  File "run.py", line 17605, in <module>
  File "<string>", line 21, in <module>
  File "site-packages\Selenium\webdriver\firefox\webdriver.py", line 77, in __init__
  File "site-packages\Selenium\webdriver\firefox\extension_connection.py", line 49, in __init__
  File "site-packages\Selenium\webdriver\firefox\firefox_binary.py", line 68, in launch_browser
  File "site-packages\Selenium\webdriver\firefox\firefox_binary.py", line 103, in _wait_until_connectable
WebDriverException: Message: Can't load the profile. Profile Dir: %s If you specified a log_file in the FirefoxBinary constructor, check it for details.

私はまた、以下のコードでfirefoxプロファイルを作成しようとしました:

from Selenium import webdriver
from Selenium.webdriver.firefox.firefox_binary import FirefoxBinary

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-Excel'))
profile.set_preference('general.warnOnAboutConfig', False)

gecko_path = "path_to_geckodriver\\geckodriver.exe"
path = "path_to_firefoxs\\Mozilla Firefox\\firefox.exe"
binary = FirefoxBinary(path)
driver = webdriver.Firefox(firefox_profile=profile,executable_path=gecko_path)
  • Python 2.7
  • Firefox 60
  • Geckodriver-v0.20.1-win64.Zip
  • セレン3.12.0
5
Chris

私が使用するウィンドウでは:

fp = webdriver.FirefoxProfile('C:/Users/x/AppData/Roaming/Mozilla/Firefox/Profiles/some-long-string')
driver = webdriver.Firefox(firefox_profile=fp)
...

現在のProfile Folder、タイプabout:supportをURLフィールドに入力してEnterキーを押します。

0
Pedro Lobito

chromeドライバに切り替えます。Firefox、gecko、およびSeleniumは現在、一緒にうまく機能していません。これが最終的に私のために機能したものです。

import unittest
from Selenium import webdriver
from Selenium.common.exceptions import NoSuchElementException

class TestTemplate(unittest.TestCase):
    """Include test cases on a given url"""

    def setUp(self):
        """Start web driver"""
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--no-sandbox')
        self.driver = webdriver.Chrome(chrome_options=chrome_options)
        self.driver.implicitly_wait(10)

    def tearDown(self):
        """Stop web driver"""
        self.driver.quit()

    def test_case_1(self):
        """Go to python.org and print title"""
        try:
            self.driver.get('https://www.python.org/')
            title = self.driver.title
            print title
        except NoSuchElementException as ex:
            self.fail(ex.msg)

    def test_case_2(self):
        """Go to redbull.com and print title"""
        try:
            self.driver.get('https://www.redbull.com')
            title = self.driver.title
            print title
        except NoSuchElementException as ex:
            self.fail(ex.msg)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestTemplate)
    unittest.TextTestRunner(verbosity=2).run(suite)

フレームバッファーをロードするJenkinsfileを使用して、Seleniumとpythonスクリプトを呼び出します。

これはローカルマシンで簡単に実行できます。 Linuxで迷惑な箱を手に入れたいかもしれません。

pythonスクリプトを起動します。

sh "(Xvfb:99 -screen 0 1366x768x16&)&&(python ./${PYTHON_SCRIPT_FILE})"

これは、このDockerイメージを実行しているDockerファイルから呼び出されます。

https://github.com/cloudbees/Java-build-tools-dockerfile

0
James Knott

Javaでカスタマイズされたfirefoxプロファイルをロードする:

FirefoxOptions options = new FirefoxOptions();

ProfilesIni allProfiles = new ProfilesIni();         
FirefoxProfile Selenium_profile = allProfiles.getProfile("Selenium_profile");
options.setProfile(Selenium_profile);

options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "C:\\Users\\pburgr\\Desktop\\geckodriver-v0.20.0-win64\\geckodriver.exe");
driver = new FirefoxDriver(options);
driver.manage().window().maximize();
0
pburgr

プロファイルの設定を更新しませんでしたprofile.update_preferences()。プリファレンスを設定した後、プロファイルを更新する必要があります。以下のコードに従ってください:

from Selenium import webdriver
from Selenium.webdriver.firefox.firefox_binary import FirefoxBinary

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-Excel'))
profile.set_preference('general.warnOnAboutConfig', False)
profile.update_preferences()
gecko_path = "path_to_geckodriver\\geckodriver.exe"
path = "path_to_firefoxs\\Mozilla Firefox\\firefox.exe"
binary = FirefoxBinary(path)
driver = webdriver.Firefox(firefox_profile=profile,executable_path=gecko_path)
0
Sang9xpro