更糟糕的是,我的测试通过Chrome 77和Chromedriver 77通过(测试通过,数据加载在网页中,等等)。仅当我手动启动Chrome 77浏览器并测试它是否失败时。
这基本上是我的代码正在做的事情:
import pytesseract
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/ tesseract.exe'
from PIL import Image
value=Image.open("C://Profile_tess.png")
text = pytesseract.image_to_string(value)
print("text present in images:",text)
问题是在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并非没有错。
答案 0 :(得分:3)
我知道了!问题是Chrome 77默认情况下会启用TrustedTypes API。但是,如果通过Chromedriver启动Chrome 77会关闭它,这是一个不错的nasty bug。
使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。