gpt4 book ai didi

python - Selenium ChromeDriver "get"无法可靠地加载@import 字体

转载 作者:行者123 更新时间:2023-12-04 04:14:31 44 4
gpt4 key购买 nike

我有几个这样的 HTML 页面:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
body { font-family: 'Droid Serif'; }</style>
</head>
...

使用 Selenium 加载页面时:

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--kiosk-printing')
browser = webdriver.Chrome(r"chromedriver.exe", options=chrome_options)
browser.get("http://www.example.com/")

然后:

  • 50% 的时间,字体未加载(页面显示为默认衬线字体(可能是 Times New Roman))
  • 50% 的时间,字体被加载

如何使用 Selenium 使字体加载更可靠?

甚至使用 time.sleep(2); 第二次重新加载页面; browser.get(...) 在 100% 的时间里都没有帮助。

最佳答案

我偶然发现了这个 Web API ( https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet)。

试试这段代码:


from selenium import webdriver
import time

u = 'https://fonts.google.com/'
driver = webdriver.Chrome(executable_path=r"chromedriver.exe")
driver.maximize_window()
driver.get(u)

while True:
script = '''return document.fonts.status;'''
loaded = driver.execute_script(script)
if loaded == 'loaded':
print('All fonts loaded')
break
print('Fonts still loading')
time.sleep(.5)

必须说,在我的例子中,只有当页面完全加载(包括字体)时,chrome 才会将控件返回给 selenium。也许您可以提供一个最小示例来测试您的 50-50 场景

关于python - Selenium ChromeDriver "get"无法可靠地加载@import 字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61013699/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com