Как открыть консоль в firefox python selenium?

Я пытаюсь открыть консоль Firefox через Selenium с помощью Python. Как я могу открыть консоль firefox с помощью python selenium? Можно ли отправить ключи драйверу или что-то в этом роде?


person patricmj    schedule 05.11.2015    source источник


Ответы (6)


Попробуйте смоделировать ту же процедуру, что и в «обычном» окне Firefox, используя функцию send_keys:

from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.SHIFT + 'k')
person Javitronxo    schedule 05.11.2015
comment
Это тоже работает, и это будет работать, если у вас установлен firebug. - person patricmj; 05.11.2015
comment
Еще лучше: WebDriverWait (driver, 10) .until (лямбда-драйвер: driver.find_element_by_tag_name (body)). Send_keys (Keys.CONTROL + Keys.SHIFT + 'k') - person patricmj; 05.11.2015
comment
В целом рекомендуется использовать ожидания WebDriver, я всегда устанавливаю неявное ожидание, поэтому мне не нужно использовать явные ожидания для каждого элемента, как вы указали. После создания элемента драйвера добавьте: driver.implicitly_wait(15) - person Javitronxo; 05.11.2015
comment
вышеуказанное решение больше не работает - VS 2017, Selenium v ​​3.12.1, C #, Firefox V 60.0.2, Chrome V 66, Nunit v3.10.1, Gecko Driver v 20.1, chrome driver v 2.4 - person Mike ASP; 13.06.2018

Я знаю, что он относительно старый, но недавно столкнулся с этой проблемой. Я получил firefox для автоматического открытия devtools, передав аргумент процесса браузера «-devtools».

Селен: 3.14 geckodriver: 0.21.0 firefox: 61.0.1

  from __future__ import print_function

  from datetime import datetime
  import logging
  import os

  from selenium import webdriver
  from selenium.webdriver.firefox.options import Options as FirefoxOptions

  def before_scenario(context, scenario):
    logging.info("RUNNING: " + scenario.name)
    print("Browser Test starting.\n")

    options = FirefoxOptions()
    options.log.level = "trace"
    options.add_argument("-devtools")

    if 'headless' in os.environ and os.environ['headless'] == '1':
         options.headless = True

    context.driver = webdriver.Firefox(firefox_options=options)


    context.driver.maximize_window()
person darkknight51    schedule 07.08.2018
comment
Вот список всех возможных аргументов командной строки для FireFox. developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options - person darkknight51; 07.08.2018

У меня не установлен firebug, это работает на Mac:

from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name("body").send_keys(Keys.COMMAND + Keys.ALT + 'k')
person Mesut GUNES    schedule 05.11.2015
comment
Command + alt + k / Ctrl + shift + k всегда будет работать. Дело в том, что если установлен firebug, он заменяет кнопку F12 для открытия firebug, а не инструменты разработчика. - person patricmj; 05.11.2015
comment
вышеуказанное решение больше не работает - VS 2017, Selenium v ​​3.12.1, C #, Firefox V 60.0.2, Chrome V 66, Nunit v3.10.1, Gecko Driver v 20.1, chrome driver v 2.4 - person Mike ASP; 13.06.2018
comment
@MikeASP, что тогда работает для упомянутых вами версий? - person iDrwish; 31.07.2018

Это работает:

ActionChains (драйвер) .key_down (Keys.F12) .key_up (Keys.F12) .perform ()

По крайней мере, без установленного firebug :)

person patricmj    schedule 05.11.2015

В Firefox 60+ вам необходимо использовать контекст Chrome (CONTEXT_CHROME) и выбрать какой-либо элемент пользовательского интерфейса для отправки ключей на консоль. В этом примере показано, как использовать команду GCLI из консоли с использованием контекста Chrome и элемента пользовательского интерфейса tabbrowser-tabs для выдачи нажатия клавиш

from selenium.webdriver import Firefox, DesiredCapabilities, FirefoxProfile
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

import time

profile = FirefoxProfile()
# Allow autoplay
profile.set_preference("media.autoplay.default", 0)
cap = DesiredCapabilities.FIREFOX
options = Options()
options.headless = True
webdriver = Firefox(firefox_profile=profile, capabilities=cap, options=options)
webdriver.get("https://www.youtube.com/watch?v=EzKkl64rRbM")
try:
    time.sleep(3)
    with webdriver.context(webdriver.CONTEXT_CHROME):
        console = webdriver.find_element(By.ID, "tabbrowser-tabs")
        console.send_keys(Keys.LEFT_CONTROL + Keys.LEFT_SHIFT + 'k')
        time.sleep(5)
        console.send_keys(':screenshot --full-page' + Keys.ENTER)
        console.send_keys(Keys.LEFT_CONTROL + Keys.LEFT_SHIFT + 'k')
except:
    pass
webdriver.quit()
person lukss12    schedule 17.12.2019

Доступ к консоли разработчика в Firefox

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver_options = Options()
driver = webdriver.Firefox(
        options=driver_options,
        executable_path="geckodriver.exe")

actions = ActionChains(driver)
actions.send_keys(Keys.COMMAND + Keys.ALT + 'k')
person Sudharsana Rajasekaran    schedule 05.11.2019
comment
после запуска этого в python в Windows 10 я получаю сообщение об ошибке Traceback (последний вызов последний): файл XXX, строка 5, в driver_options = Options () NameError: имя 'Параметры' не определено - person Ray Troy; 06.03.2020