pytest高版本兼容test_data[“log“] = _handle_ansi(“\n“.join(logs))错误
一、问题现象:
执行selenium+pytest结束时报:
INTERNALERROR> File "D:\workspace\pytestframe\.venv\Lib\site-packages\pytest_html\report_data.py", line 141, in add_test
INTERNALERROR> test_data["log"] = _handle_ansi("\n".join(logs))
INTERNALERROR> ^^^^^^^^^^^^^^^
INTERNALERROR> TypeError: sequence item 0: expected str instance, div found
二、问题解决:
定位这个问题,进入对应的代码文件夹:
在报错行加入这行代码,即可解决问题:
logs = [log.text if hasattr(log, 'text') else str(log) for log in logs]
三、解释:
这个错误信息表明在尝试连接一个序列(logs
)时,序列中的第一个元素是一个 div
对象,而不是字符串。join
方法只能处理字符串,因此引发了 TypeError
转换 div
对象为字符串: 如果 logs
中包含 div
对象,确保将其转换为字符串。你可以使用 .text
属性或 .get_attribute("outerHTML")
方法获取其文本或 HTML 内容
当然很多selenium相关问题都和webdriver的版本和浏览器匹配有关,一定要下载和浏览器相对应的版本:
python-webdriver谷歌浏览器的driver,用于selenium内核驱动:
http://chromedriver.storage.googleapis.com/index.html
123以后的谷歌浏览器版本:
Chrome for Testing availability