我一直在使用 python selenium 进行 web 自动化测试。自动化的关键部分是为 HTML 页面中的用户可见对象找到正确的元素。以下 API 大部分时间都有效,但并非一直有效。
find_element_by_xxx, xxx can be id, name, xpath, tag_name etc.
当 HTML 页面太复杂时,我想搜索 dom 树。想知道是否可以要求 selenium 服务器序列化整个 DOM(具有可用于通过 webdriver 服务器执行操作的元素 id)。客户端(python 脚本)可以执行自己的搜索算法来找到正确的元素。
请注意,python selenium 可以通过以下方式获取整个 html 页面
drv.page_source
但是,从 selenium 服务器的角度来看,解析它并没有给出内部元素 id,因此没有用。
EDIT1: 对其进行解释以使其更清楚(感谢@alecxe):这里需要的是selenium服务器中所有DOM元素(保留其DOM结构)的序列化表示,该序列化表示可以发送到客户端(一个 python selenium 测试应用程序),它可以进行自己的搜索。
原文由 packetie 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试:
这应该匹配文档中的所有元素。
更新(以匹配问题改进):
使用 javascript 并将 DOM 作为字符串返回: