Finish Chrome example loading v1
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from .chrome import is_expected_tabs, is_expected_bookmarks
|
||||
from .chrome import is_expected_tabs, is_expected_bookmarks, compare_pdfs, is_cookie_deleted, is_shortcut_on_desktop
|
||||
from .docs import compare_font_names, compare_subscript_contains, has_page_numbers_in_footers
|
||||
from .docs import find_default_font, contains_page_break, compare_docx_files, compare_docx_tables, compare_line_spacing, \
|
||||
compare_insert_equation
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import logging
|
||||
from typing import Any, Dict, List
|
||||
|
||||
import fitz # PyMuPDF
|
||||
import rapidfuzz.fuzz as fuzz
|
||||
|
||||
from desktop_env.evaluators.metrics.utils import are_lists_equal, compare_urls
|
||||
|
||||
logger = logging.getLogger("desktopenv.metrics.chrome")
|
||||
@@ -22,18 +26,72 @@ def is_expected_tabs(open_tabs: List[Dict[str, str]], rule: Dict[str, Any]) -> f
|
||||
return 0
|
||||
|
||||
|
||||
def is_expected_bookmarks(bookmarks: List[Dict[str, Any]], rule: Dict[str, Any]) -> float:
|
||||
def is_expected_bookmarks(bookmarks: List[str], rule: Dict[str, Any]) -> float:
|
||||
"""
|
||||
Checks if the expected bookmarks are in Chrome.
|
||||
"""
|
||||
|
||||
# todo
|
||||
match_type = rule['type']
|
||||
|
||||
if match_type == "url":
|
||||
expected_urls = rule['urls']
|
||||
actual_urls = [bookmark['url'] for bookmark in bookmarks]
|
||||
return 1 if are_lists_equal(expected_urls, actual_urls, compare_urls) else 0
|
||||
if not bookmarks:
|
||||
return 0.
|
||||
elif rule['type'] == "bookmark_bar_folders_names":
|
||||
bookmark_bar_folders_names = [bookmark['name'] for bookmark in bookmarks['bookmark_bar']['children'] if
|
||||
bookmark['type'] == 'folder']
|
||||
return 1. if set(bookmark_bar_folders_names) == set(rule['names']) else 0.
|
||||
elif rule['type'] == "bookmark_bar_websites_urls":
|
||||
bookmark_bar_websites_urls = [bookmark['url'] for bookmark in bookmarks['bookmark_bar']['children'] if
|
||||
bookmark['type'] == 'url']
|
||||
return 1. if set(bookmark_bar_websites_urls) == set(rule['urls']) else 0.
|
||||
else:
|
||||
logger.error(f"Unknown type: {match_type}")
|
||||
return 0
|
||||
raise TypeError(f"{rule['type']} not support yet!")
|
||||
|
||||
|
||||
def compare_pdfs(pdf1_path, pdf2_path):
|
||||
"""
|
||||
Compare two PDF files.
|
||||
"""
|
||||
|
||||
def extract_text_from_pdf(pdf_path):
|
||||
"""Extract text from each page of the PDF."""
|
||||
text = ""
|
||||
with fitz.open(pdf_path) as pdf:
|
||||
for page in pdf:
|
||||
text += page.get_text()
|
||||
return text.strip()
|
||||
|
||||
text1 = extract_text_from_pdf(pdf1_path)
|
||||
text2 = extract_text_from_pdf(pdf2_path)
|
||||
|
||||
return fuzz.ratio(text1, text2) / 100
|
||||
|
||||
|
||||
def is_cookie_deleted(cookie_data, rule):
|
||||
"""
|
||||
Check if the cookie is deleted.
|
||||
"""
|
||||
|
||||
if rule['type'] == 'domains':
|
||||
cookies_domains = [cookie[1] for cookie in cookie_data]
|
||||
for domain in rule['domains']:
|
||||
for cookies_domain in cookies_domains:
|
||||
if compare_urls(domain, cookies_domain):
|
||||
return 0.
|
||||
return 1.
|
||||
else:
|
||||
raise TypeError(f"{rule['type']} not support yet!")
|
||||
|
||||
|
||||
def is_shortcut_on_desktop(shortcuts: Dict[str, str], rule):
|
||||
"""
|
||||
Check if the shortcut is on the desktop.
|
||||
"""
|
||||
# fixme: if the name of the website changed in the future, this will not work; can be replaced with url
|
||||
if rule['type'] == 'name':
|
||||
for shortcut_path, shortcut_content in shortcuts.items():
|
||||
if "Name=" + rule['name'] + "\n" in shortcut_content:
|
||||
return 1.
|
||||
return 0.
|
||||
elif rule['type'] == 'url':
|
||||
raise TypeError(f"{rule['type']} not support yet!")
|
||||
elif rule['type'] == 'id':
|
||||
raise TypeError(f"{rule['type']} not support yet!")
|
||||
else:
|
||||
raise TypeError(f"{rule['type']} not support yet!")
|
||||
|
||||
Reference in New Issue
Block a user