Selenium切换到iframe方法以及switch_to用法

定位iframe

1.有id,并且唯一,直接写id

    driver.switch_to_frame("x-URS-iframe")

    driver.switch_to.frame("x-URS-iframe")

2.有name,并且唯一,直接写name

    driver.switch_to_frame("xxxx")

    driver.switch_to.frame("xxxx")

3.无id,无name,先定位iframe元素

    iframe = driver.find_elements_by_tag_name("iframe")[0]

    driver.switch_to_frame(iframe)

    driver.switch_to.frame(iframe)

4.通常采用id和name就能够解决绝大多数问题。但有时候frame并无这两项属性,则可以用index和WebElement来定位:

    index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位

    WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象



注意:

如果存在两个frame则要一层层嵌套进去

    driver.switch_to.frame("frame1")

    driver.switch_to.frame("frame2")


switch_to包详解:切换handle、frame、alert

我们在写代码的时候发现,以上对窗口切换(handle)、frame切换、弹窗(alert),这些方法都被编辑器划伤了一条横线,但是方法还是可以正常使用,只是目前的pycharm不推荐你继续这样使用了(有新的方法可以替代它),那如果我们不使用这些方法的话,我们该怎么去完成切换窗口、frame这些操作呢?所以我们来学习一下替代这几个方法的switch_to包。


一、switch_to包的方法详解

在switch_to的基础上,有这么几个方法,鉴于基本上都是之前曾经讲过的,这次把等价的方法也列出来,供大家参考


driver.switch_to.parent_frame()

这是switch_to中独有的方法,可以切换到上一层的frame,对于层层嵌套的frame很有用

注: 官方把selenium.webdriver包中的switch方法全部封装成了一个包,这样能够比较明了和方便,也符合软件编程中的高内聚低耦合的思想。



两个xpath定位的推荐:

谷歌:XPath Helper    https://blog.csdn.net/xiaobai_IT_learn/article/details/100977653

火狐:Xpath Checker

你可能感兴趣的:(Selenium切换到iframe方法以及switch_to用法)