Selenium操作Iframe中的页面元素

2019年1月29日 4.74k 次阅读 6 条评论 2 人点赞

写在前面

上一篇文章写了关于如何基于Selenium操作iframe中页面元素的内容,点击链接跳转详情:

Selenium操作Frame中的页面元素

本文将继续讲解,如何使用Selenium操作iframe中的页面元素。

实践案例

在web应用中iframe一般用在网页内显示网页,或者显示文档中文档。由此也可以看出frame和iframe之间的区别:frame是整个页面的框架,iframe是内嵌的网页元素。Selenium提供的switch_to.frame()方法同样可以实现Iframe之间的跳转。

为了更直观的演示实践案例,制作了一个包含frame和iframe的html。本文代码可以直接对下面的Html页面进行演示操作。点击链接跳转传送门:Iframe.html

前端界面显示如下:

html代码显示如下:

案例操作步骤:

1.首先定位页面中的frame:

2.获取页面最右边frame中的内容;

3.通过条件判断获取的内容是否复核预期结果;

4.选择测试类型:安全测试;

5.跳转到frame里面的Iframe框架;

6.获取iframe框架中的内容并且做条件匹配,检查获取内容是否成功;

详细测试代码如下:

#control_iframe.py
#www.testclass.cn
#Altumn
import time
from selenium import webdriver

driver=webdriver.Chrome()
url="https://www.testclass.cn/test_html/iframe/frameset.html"
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(10)

#首先定位到最右侧的frame;
#通过driver.switch_to.frame("id")跳转frame;
driver.switch_to.frame("rightframe")
rightframe = driver.find_element_by_xpath("//p")
text=rightframe.text
print("frame内容为:",text)
correct_text = "你喜欢做什么类型的软件测试?"
#判断一下是否和预期的内容correct_text相符合;
if text == correct_text:
    print("frame内容核对成功!")
else:
    print("frame内容核对失败!")
#选择测试类型“安全测试”;
driver.find_element_by_id("security_test").click()
#跳转frame里面的iframe框架;
driver.switch_to.frame("iframe_test")
iframe = driver.find_element_by_xpath("//p")
text=iframe.text
print("最里面iframe内容为:",text)
correct_text = "这只是一个测试用的Iframe页面"
#判断一下是否和预期的内容correct_text相符合;
if text == correct_text:
    print("最里面iframe内容核对成功!")
else:
    print("最里面iframe内容核对失败!")
#等待一下,演示效果;
time.sleep(2)
driver.quit()

执行结果如下所示:

PS C:\Users\WangXiao\Desktop\python> cd 'c:\Users\WangXiao\Desktop\python'; ${env:PYTHONIOENCODING}='UTF-8'; ${env:PYTHONUNBUFFERED}='1'; & 'C:\Users\WangXiao\AppData\Local\Programs\Python\Python36\python.exe' 'c:\Users\WangXiao\.vscode\extensions\ms-python.python-2018.12.1\pythonFiles\ptvsd_launcher.py' '--default' '--client' '--host' 'localhost' '--port' '61951' 'c:\Users\WangXiao\Desktop\python\control_iframe.py'

DevTools listening on ws://127.0.0.1:12502/devtools/browser/e4dea1b9-4c9c-45da-a7da-9552dce8c7f1
frame内容为: 你喜欢做什么类型的软件测试?
frame内容核对成功!
最里面iframe内容为: 这只是一个测试用的Iframe页面
最里面iframe内容核对成功!
温馨提示:欢迎点击加入软件测试学习交流QQ群:软件测试学习交流群

风里云里,我在这里等你!

文章评论(6)

  • 11

    自动化测试学习交流群:670250199

    2019年3月28日
  • Altumn

    评论来自小程序

    2019年2月1日
  • 售后小刘_微拓互联

    小程序测试一下。

    2019年2月1日
  • 售后小刘_微拓互联

    小程序测试一下。

    2019年2月1日
  • 售后小刘_微拓互联

    小程序留言测试

    2019年2月1日
  • 甜言蜜语

    博主自己制作html演示,用心良苦啊。

    2019年1月30日