簡體   English   中英

Firefox Web 控制台是否可以在無頭模式下訪問?

[英]Is the Firefox Web Console accessible in headless mode?

標題說明了一切:我想知道是否可以在無頭模式下啟動 Firefox 時與 Firefox控制台進行交互。

更一般地說,我會選擇在腳本中以編程方式訪問它的某種方式。

我試過的:

到目前為止,我一直在玩Javascript 綁定Selenium但沒有成功:

使用 Selenium 中的-devtools 選項啟動 Firefox 確實會打開開發工具,但我無法發送將我切換到實際控制台的組合鍵,或者實際上無法從我的.js腳本與打開的 devtools window 以任何方式進行交互。


編輯

回應下面的第一條評論:這個答案似乎沒有幫助。 當我將CTRL+SHIFT+k發送到google.combody標簽時,控制台沒有打開:

var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var firefox = require('selenium-webdriver/firefox');
var inpt = require('selenium-webdriver/lib/input');

var options = new firefox.Options();

var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .setFirefoxOptions(options)
    .build();

(async function(){
    await driver.get('https://google.com');
    var bdy = await driver.findElement(By.id('gsr'));
    await bdy.sendKeys(inpt.Key.CONTROL + inpt.Key.SHIFT + 'k');    
})();

這將打開頁面 ( google.com ) 並且沒有返回任何錯誤,但是任何地方都沒有控制台。

好的措施:僅發送inpt.Key.SHIFT + 'k'確實在 Google 搜索字段中輸入了大寫的 'K',所以我知道鍵被正確引用。

此外,僅發送'k' k”會在搜索字段中輸入一個小的“k”。 只有三鍵組合不起作用。

第二次編輯:

我收回:較新的答案確實有效,完全按原樣(我從node切換到Python )。

Karthik下面的評論確實解決了這個問題,但我想在這里總結一下並記錄自動化 Firefox-Web-Console 訪問的工作解決方案。

我上面鏈接的答案(在我的第二次編輯中)的要點是,為了完全訪問 Firefox 瀏覽器鍵控件,必須

  • 首先將 Firefox 上下文切換到chrome (從默認content上下文)
  • 指示自動瀏覽器驅動程序定位帶有 id tabbrowser-tabs的元素
  • 將組合鍵(在本例中為Ctrl+Shift+k )發送到該元素。

具體工作方案:

Python

腳本是

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.keys import Keys

import time

options = Options()
webdriver = Firefox(options=options)
webdriver.get("https://google.com")
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')
                
except:
    pass

使用python <path-to-script>運行它會打開一個 Firefox window 顯示google.com和底部的控制台。

Javascript

這里是完整的腳本

var webdriver = require('selenium-webdriver'),
    By = webdriver.By,
    until = webdriver.until;

var firefox = require('selenium-webdriver/firefox');
var inpt = require('selenium-webdriver/lib/input');

var options = new firefox.Options();

var driver = new webdriver.Builder()
    .forBrowser('firefox')
    .setFirefoxOptions(options)
    .build();

(async function(){
    await driver.get('https://google.com');
    await driver.setContext("chrome");

    var tabs = await driver.findElement(By.id('tabbrowser-tabs'));
    await tabs.sendKeys(inpt.Key.CONTROL + inpt.Key.SHIFT + 'k');
    
})();

使用node <path-to-script>運行它實現與上面相同的效果: Firefox window 在google.com上打開,控制台在底部打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM