[英]My website on Chrome 77 doesn't load any data, but it works fine on Chrome 76
更糟糕的是,我使用Chrome 77和Chromedriver 77通過了測試(測試通過了,數據已加載到網頁中,等等)。 只有當我手動啟動Chrome 77瀏覽器並對其進行測試時,它才會失敗。
這基本上是我的代碼正在做的事情:
// Get the query parameter "operation" from the URL
let match = new RegExp("[?&]operation=([^&]*)").exec(window.location.search);
let param = match && decodeURIComponent(match[1].replace(/\+/g, " "));
// Sanitize the URL from XSS Injection
let param = param ? window.DOMPurify.sanitize(param) : param;
if(param === "View") {
// Load data from the server
}
問題是在Chrome 77 param === "View"
是錯誤的! 但是單獨使用Chrome 77並非沒有錯。
我想到了! 問題是Chrome 77默認情況下會啟用TrustedTypes API。 但是,如果通過Chromedriver啟動Chrome 77,則會關閉該功能,這是一個非常討厭的錯誤 。
使Chrome 77 / Chromedriver 77像手動單擊頁面時一樣失敗的解決方法是啟用此chrome功能:
--enable-blink-features=TrustedDOMTypes
您將其放在--no-sandbox
或--disable-infobars
。
大! 現在,您的測試會按預期失敗。 接下來,要修復錯誤,請更改此行:
// Sanitize the URL from XSS Injection
let param = param ? window.DOMPurify.sanitize(param) : param;
為此:
// Sanitize the URL from XSS Injection
let param = param ? (window.DOMPurify.sanitize(param) || "").toString() : param;
toString()
是最重要的部分。 現在將返回TrustedType對象,而不是String。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.