我一直在使用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测试应用程序)可以进行自己的搜索。
尝试:
find_elements_by_xpath("//*")
那应该匹配文档中的所有元素。
更新(以匹配问题的改进):
使用javascript并以字符串形式返回DOM:
execute_script("return document.documentElement.outerHTML")