如何使用 Selenium 检查 Firefox 扩展的元素
How to inspect a Firefox extension's element using Selenium
我需要从使用 Selenium 的扩展通知中提取一个 link 来测试许多网站。
我正在测试的扩展程序是 github full code available here 中的这个示例,如果用户在任何Mozilla 的网站。
背景-script.js
/*
Log that we received the message.
Then display a notification. The notification contains the URL,
which we read from the message.
*/
function notify(message) {
console.log("background script received message");
var title = browser.i18n.getMessage("notificationTitle");
var content = browser.i18n.getMessage("notificationContent", message.url);
browser.notifications.create({
"type": "basic",
"iconUrl": browser.extension.getURL("icons/link-48.png"),
"title": title,
"message": content
});
}
/*
Assign `notify()` as a listener to messages from the content script.
*/
browser.runtime.onMessage.addListener(notify);
manifest.json:
{
"manifest_version": 2,
"name": "__MSG_extensionName__",
"description": "__MSG_extensionDescription__",
"version": "1.0",
"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n",
"icons": {
"48": "icons/link-48.png"
},
"permissions": ["notifications"],
"background": {
"scripts": ["background-script.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}
],
"default_locale": "en"
}
内容script.js
/*
If the click was on a link, send a message to the background page.
The message contains the link's URL.
*/
function notifyExtension(e) {
var target = e.target;
while ((target.tagName != "A" || !target.href) && target.parentNode) {
target = target.parentNode;
}
if (target.tagName != "A")
return;
console.log("content script sending message");
browser.runtime.sendMessage({"url": target.href});
}
/*
Add notifyExtension() as a listener to click events.
*/
window.addEventListener("click", notifyExtension);
我想收集出现的通知文本(link)。我将在 Selenium 中输入许多网站。
我的问题是:如何使用 Selenium 检查通知?当我右键单击通知时,我没有获得与浏览器中类似的选项。所以我无法找到要与 Selenium 一起使用的元素名称。任何提示都会有所帮助。
扩展创建的通知属于操作系统,不属于浏览器。您将无法像检查普通 HTML 元素那样检查它们。
您可以做的是监听 browser.notifications.onClosed
或 browser.notifications.onClicked
事件并在扩展代码中获取该信息。
参考文献:
我需要从使用 Selenium 的扩展通知中提取一个 link 来测试许多网站。
我正在测试的扩展程序是 github full code available here 中的这个示例,如果用户在任何Mozilla 的网站。
背景-script.js
/*
Log that we received the message.
Then display a notification. The notification contains the URL,
which we read from the message.
*/
function notify(message) {
console.log("background script received message");
var title = browser.i18n.getMessage("notificationTitle");
var content = browser.i18n.getMessage("notificationContent", message.url);
browser.notifications.create({
"type": "basic",
"iconUrl": browser.extension.getURL("icons/link-48.png"),
"title": title,
"message": content
});
}
/*
Assign `notify()` as a listener to messages from the content script.
*/
browser.runtime.onMessage.addListener(notify);
manifest.json:
{
"manifest_version": 2,
"name": "__MSG_extensionName__",
"description": "__MSG_extensionDescription__",
"version": "1.0",
"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n",
"icons": {
"48": "icons/link-48.png"
},
"permissions": ["notifications"],
"background": {
"scripts": ["background-script.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}
],
"default_locale": "en"
}
内容script.js
/*
If the click was on a link, send a message to the background page.
The message contains the link's URL.
*/
function notifyExtension(e) {
var target = e.target;
while ((target.tagName != "A" || !target.href) && target.parentNode) {
target = target.parentNode;
}
if (target.tagName != "A")
return;
console.log("content script sending message");
browser.runtime.sendMessage({"url": target.href});
}
/*
Add notifyExtension() as a listener to click events.
*/
window.addEventListener("click", notifyExtension);
我想收集出现的通知文本(link)。我将在 Selenium 中输入许多网站。
我的问题是:如何使用 Selenium 检查通知?当我右键单击通知时,我没有获得与浏览器中类似的选项。所以我无法找到要与 Selenium 一起使用的元素名称。任何提示都会有所帮助。
扩展创建的通知属于操作系统,不属于浏览器。您将无法像检查普通 HTML 元素那样检查它们。
您可以做的是监听 browser.notifications.onClosed
或 browser.notifications.onClicked
事件并在扩展代码中获取该信息。
参考文献: