一尘不染

需要从selenium服务器中转储带有元素ID的整个DOM树

selenium

我一直在使用pythonselenium进行网络自动化测试。自动化的关键部分是为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结构),该序列化表示可以发送到客户端(
pythonselenium测试应用程序)可以进行自己的搜索。


阅读 238

收藏
2020-06-26

共1个答案

一尘不染

尝试:

find_elements_by_xpath("//*")

那应该匹配文档中的所有元素。

更新(以匹配问题的改进):

使用javascript并以字符串形式返回DOM:

execute_script("return document.documentElement.outerHTML")
2020-06-26