当前位置: 首页 > 面试题库 >

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

西门淮晨
2023-03-14
问题内容

我一直在使用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")


 类似资料:
  • 问题内容: 像包,并允许一个与本地或远程数据库服务器连接。我创建一个便携式项目,该项目涉及的情况下导入SQL数据(或设备)不总是可以访问正在运行的服务器,但 你 总是可以访问数据库的最新.SQL转储。 目标似乎很简单:在不涉及MySQL服务器的情况下将.sql转储导入R。 更具体地说,我想创建一个列表列表,其中的元素与.sql转储中定义的任何数据库相对应(可能有多个),而这些元素又由这些数据库中的

  • 这里有一个udemy课程(来自“Lets Kode IT”),用Selenium开发一个web自动化框架。教师已经用Maven创建了一个Java项目。主要需要的依赖物是hamcrest、testng和Selenium。但是,教师坚持认为selenium-server依赖项也应该包括在内,因为“Maven可能有一个小故障,它可能无法获得selenium-java的所有依赖项(屏幕截图附上)”。 我的

  • 我有一个AsyncTask,其中我创建了一个ViewPager,当我为它分配一个适配器时,会出现这个错误 java.lang.IllegalStateException:带有适配器com.example.kos.pagerAdapterzvon@646Addd的ViewPager在Androidx.fragment.app.fragmentPagerAdapter.Startupdate(frag

  • 下面是html代码 我需要从上面的代码中提取文本“我需要这个文本”。 我尝试了以下方法,但无法得到唯一一行“我需要此文本: 1.)by.xpath("//h2[@id='xyz']"). gettext();获取错误说InvalidSseltorError:的xpath表达式的结果"//h2[@id='xyz']/继-兄弟::文本()"是:[对象文本].它应该是一个元素。 2)通过。//xyz[“

  • 我有一个AsyncTask,在其中我创建了一个ViewPager,当我为它分配了一个适配器时,会出现这个错误 JAVAlang.IllegalStateException:带有适配器com的ViewPager。实例科斯。PagerAdapterZvon@646addd在androidx处需要视图id。碎片应用程序。碎裂翼翅。androidx上的startUpdate(FragmentPagerAd