[英]Is the Firefox Web Console accessible in headless mode?
標題說明了一切:我想知道是否可以在無頭模式下啟動 Firefox 時與 Firefox控制台進行交互。
更一般地說,我會選擇在腳本中以編程方式訪問它的某種方式。
我試過的:
到目前為止,我一直在玩Javascript 綁定到Selenium但沒有成功:
使用 Selenium 中的-devtools 選項啟動 Firefox 確實會打開開發工具,但我無法發送將我切換到實際控制台的組合鍵,或者實際上無法從我的.js
腳本與打開的 devtools window 以任何方式進行交互。
編輯
回應下面的第一條評論:這個答案似乎沒有幫助。 當我將CTRL+SHIFT+k
發送到google.com
的body
標簽時,控制台沒有打開:
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”。 只有三鍵組合不起作用。
第二次編輯:
Karthik下面的評論確實解決了這個問題,但我想在這里總結一下並記錄自動化 Firefox-Web-Console 訪問的工作解決方案。
我上面鏈接的答案(在我的第二次編輯中)的要點是,為了完全訪問 Firefox 瀏覽器鍵控件,必須
chrome
(從默認content
上下文)tabbrowser-tabs
的元素Ctrl+Shift+k
)發送到該元素。腳本是
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
和底部的控制台。
這里是完整的腳本
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.