Selenium webdriver 怎么回根元素,

skyshine · 2022年03月23日 · 最后由 陈恒捷 回复于 2022年04月09日 · 3423 次阅读
<html>
<body>
<div>
    <div id="wai">...</div>
    .........
    <iframe id="x">
        <html>
            <body id="bodyx">
                <div id="nei">ddddddddddd</div>
                <div>
                    <div>
                        ....
                        <div id="bb">
                              .........
                              .........
                                ......
                        </div>
                    </div>
                </div>
                <div id="aa"></div>
            </body>
        </html>
    </iframe>
    .......
</div>
</body>
</html>

我用 webdriver 切换到 iframe 里,然后定位到 bb
现在我需要临时定位 aa 元素。
最后在回到 bb 那里。

我想先回到根无素

然后在定位 aa ,可以吗?
webdriver 怎么回到根元素。

或者别的方法由 bb 直接定位 aa

谢谢

最佳回复

一个 iframe 直接定位即可。

共收到 7 条回复 时间 点赞

不是很懂你的问题是什么,这两个元素都有 ID,直接通过 ID 定位就可以了;
虽然说有 iframe,但是看上面的结构,两个元素都是在 iframe 里面啊,所以在操作这两个元素之间不需要切换;即使是一个在 iframe 里面,一个在外面,只需要中间加一个切换回主页面的动作就可以了吧?

用 xpath 轴定位

一个 iframe 直接定位即可。

Ouroboros 回复

shi = d.find_element_by_css_selector('#bb')
已经定位到 bb 了,而 aa 确是在当前定位元素的多层之外,我以为要先回到根,至少是 aa 外的元素才能定位到。
没想到原来直接就可以。。。

.switch_to.default_content()

iframe 可以理解为一个 page

skyshine 回复

1、每次查询,是基于当前页面的全部 html 来进行查询的。iframe 是比较特殊的标签,在 webdriver 里面一个 iframe 就相当于一个独立的页面,没法跨 iframe 查看里面的 html 内容,所以需要用 switch 语句才能切换 iframe 。

2、你这里面 aa 和 bb 都在同一个 iframe 标签里,所以不需要切换 iframe ,直接查就好了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册