shadow-威尼斯人2299

玩技站长
管理员, keymaster
7002
文章
2
粉丝
py自动化评论254字数 466阅读1分33秒阅读模式
shadow-root是前端的特殊元素节点,其使用了一个叫做shadowdom的技术做了封装,shadowdom的作用可以理解为在默认的dom结构中又嵌套了一个dom结构(和iframe有点类似,只不过iframe内嵌的是html),我们遇见shadow-root元素时注意需要切换才能定位其内部元素。

在做web自动化,有一些特殊元素是在shadow-root节点下面的,如果通过常规的xpath或者其他的定位方式是定位不到对应元素的,比如下面的页面:

 

为什么shadow-root节点下的元素定位不到呢?

shadow-root是前端的特殊元素节点,其使用了一个叫做shadowdom的技术做了封装,shadowdom的作用可以理解为在默认的dom结构中又嵌套了一个dom结构(和iframe有点类似,只不过iframe内嵌的是html),内嵌的dom结构默认是隐藏的,所以我们如果想要在shadow-root底下的dom中定位元素,那么就需要进行切换。

1066vip威尼斯下载的解决方案:

使用javascript操作,打开f12调试窗口->进入console控制台

输入如下代码:

    document.queryselector("wujie-app").shadowroot.queryselector('button[class="el-button"]')

    效果如下:

    step1:先去找到shadow-root的宿主节点,对应的是wujie-app

    step2:使用shadowroot方法进行切换

    step3:在shadowdom中再通过定位方法进行元素查找

    另一种傻瓜式1066vip威尼斯下载的解决方案

    如果不知道javascript如何写,可以直接在元素上通过右键 -> copy -> copy js path:

    同样也可以定位到对应元素。

    在python中,通过selenium webdriver调用execute_script方法执行js代码即可:

    driver.execute_script('document.queryselector("wujie-app").shadowroot.queryselector('button[class="el-button"]')')

    注意,字符串里面的单双引号嵌套的情况下需要进行转义。

     
    • 威尼斯人2299的版权提示:非本站文章仅供存储任何法律责任由作者承担
      免责声明:部分内容来自用户上传发布或新闻客户端自媒体如有侵权请反馈站长处理
    • 原创转载:阅读转载说明>>> https://www.playezu.com/814810.html

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证