Python中frame,selenium frameset

  Python中frame,selenium frameset

  Python对selenium tools中框架/iframe/框架集切换问题的处理_技术博客of _mb62abf3afb54fb _博客

  前言框架标签有三种:frame、Frame、iframeFrameset和其他普通标签没什么区别,不会影响元素的正常定位;对于selenium定位,frame和iframe是相同的。selenium工具中有一组操作frame/iframe框架的方法。

  iframe元素将创建包含另一个文档的内嵌框架(即内嵌框架)。【说明:它就像我们的一个主页。里面有很多小模块。每个小模块都用这个叫iframe的东西隔开,方便维护和开发。也方便开发自己的部分,互不相干]

  通常不在同一个iframe分为两种情况:一种是包含(嵌套),一种是层次。

  我们为什么要定位iframe?由于iframe是独立的小模块,就像机舱的特点,所以iframe就是机舱门。如果你想进入船舱找东西,你必须先进入舱门。因此,当元素位于不同的iframe中时,必须首先输入元素所在的iframe,然后才能定位元素。

  iframe的定位有几种方法:1。使用iframe中的ID来定位它;2.使用iframe中的名称来定位;3.使用xpath定位;4.使用css进行定位

  1.输入iframe

  首先我们使用self.driver.switch_to.frame()的方法进入iframe框架。如果iframe是包含关系,我们需要从最外面的iframe开始一层一层的输入。

  self.driver.switch_to.frame()

  1.使用iframe中的ID来定位。

  self . driver . switch _ to . frame( noticeCheckWin )

  2.使用iframe中的名称来定位。

  self . driver . switch _ to . frame( noticeCheckWin )

  3.使用xpath定位

  self . frame 2=self . driver . find _ element _ by _ XPath(/html/body/div[2]/div[2]/div[2]/iframe[3])

  自我。driver.switch _ to。框架(自我。frame2) #定位动态iframe。您可以删除动态部分,然后用xpath找到它。

  4.使用css进行定位

  self . frame 3=self . driver . find _ element _ by _ CSS _ selector( body div . h-main div . h-screen . layout div . h-screen-coni fram )#你还可以发现所有路径都是用下标截出来的。

  self.driver.switch_to .帧(self.frame3)

  2.退出iframe

  退出iframes有两种形式:1。退出所有iframes并切换到主文档;2.返回到父iframes。

  1.退出所有iframe并切换到主文档。

  self . driver . switch _ to . default _ content(),

  2.返回父iframe

  敬。parent _ frame () #回到想要的层次方法iframe框架有name或id属性的值。

  driver . switch _ to . frame( iframe-id )driver . switch _ to . frame( iframe-name )【注意】不得不提一下switch_to_frame()方法。很多人这样写的时候会发现这句话被划掉了,因为最新版本的selenium库已经进行了相关的方法

  frame/iframe框架没有name或id属性的值:采用xpath元素定位(使用iframe的其他属性)。

  例如:

  代码如下:

  xf=self . driver . find _ element _ by _ XPath(//iframe[@ allow transparency= true ])

  Driver.switch_to.frame(xf)跳出当前帧/iframe(返回上一帧/iframe)

  self . driver . switch _ to . parent _ frame()返回最外层框架/iframe框架。

  驱动程序示例。切换到。default _ content()示例:切入框架selenium工具提供了switch_to.frame()方法切入框架;

  切换到。frame (reference) # reference是传入的参数,用于定位框架。可以传入selenium的id、名称、索引和WebElement对象;Html代码:

  超文本标记语言

  标题iframe测试/标题/标题

  身体

  iframe id= frame 1 src= name= name 1 /iframe

  英国铁路公司

  iframe id= frame 2 src= name= name 2 /iframe

  /body

  /html python脚本代码:

  从selenium导入web驱动程序

  driver=webdriver。铬合金()

  Driver.switch_to.frame(0) # 1。用帧的索引来定位,第一个是0

  # driver . switch _ to . frame( frame 1 )# 2。使用id定位

  # driver . switch _ to . frame( name 1 )# 3。使用名称定位

  #司机。切换到。框架(驱动程序。find _ element _ by _ id( frame 1 )# 4。使用WebElement对象定位元素通常使用ID和name定位元素,可以解决大部分问题。但是有时frame标签没有这两个属性,所以可以使用index和WebElement来定位它:

  (1)index从0开始,传入的integer参数由index确定定位,传入的str参数由id/name确定定位。

  (2)WebElement对象,即find_element系列方法获得的对象。我们可以使用tag_name、xpath等。定位框架对象。

  例:裁剪掉框架frame,剪成框架frame后,就不能继续操作主文档的元素了。这时候如果要操作主文档的内容,就需要切回主文档。

  Selenium工具提供了switch_to.default_content()方法来裁剪框架frame;

  driver . switch _ to . default _ content()示例:嵌套框架的操作html代码:

  超文本标记语言

  标题iframe测试/标题/标题

  身体

  iframe id= frame 1 src= name= name 1

  iframe id= frame 2 src= name= name 2 /iframe

  /iframe

  /body

  /html 1。从主文档剪切到frame2框架,一层一层地剪切进去。

  driver.switch_to.frame(frame1 )

  driver . switch _ to . frame( frame 2 )2。从第2帧切回到第1帧。在这里,selenium tool为我们提供了一种从子框架切回到父框架的方法,而不需要切回到主文档然后再切入。

  driver . switch _ to . parent_frame()#如果当前文档为主文档,没有有效的解释:用parent _ frame()的方法,相当于后退,我们可以随意切换不同的框架帧,在不同层次的框架帧中随意跳转。

  期待陌生,拥抱惊喜。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: