python3.5+selenium3.4自动化测试5_frame中的对象
来源:互联网 发布:福建知天气 编辑:程序博客网 时间:2024/06/05 10:47
这篇主要讲定位frame中的对象,经常会遇到使用firebug定位到某个元素,但运行的时候却找不到元素,很多情况是因为在web页面中经常有嵌套其他页面,所以一般我们需要在firebug的html页面中搜索一下frame或iframe
从图片可以看出(蓝色的是定位的元素)在一个iframe的页面中,所以如果没有切换到嵌套页面是找不到已经定位的元素的
贴下代码:
# _*_ coding: utf-8 _*_from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchAttributeExceptionimport unittest,time,refrom time import strftime, localtimefrom datetime import datetimeimport HTMLTestRunnerimport mod_login_onclass Createext(unittest.TestCase): def setUp(self): self.driver=webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url="http://192.168.1.131" self.verificationErrors=[] self.accept_next_alert=True def test_createext(self): u"""2.1.创建三个分机""" ''' 2.1.创建三个分机 ''' driver=self.driver driver.get(self.base_url+"/") mod_login_on.login(self) try: time.sleep(3) driver.switch_to_alert().accept() driver.implicitly_wait(3) #智能等待3 # driver.find_element_by_id("current").click() driver.find_element_by_xpath(".//*[@id='nav']/ul/li[4]/a").click() #切换到frame中再找到对应的元素 driver.switch_to.frame("mainscreen") driver.find_element_by_xpath(".//*[@id='btn_new_bulkexten']/span/span").click() driver.find_element_by_xpath(".//*[@id='btn_save_bulk']/span/span").click() driver.find_element_by_id("CHECKALL").click() driver.find_element_by_xpath(".//*[@id='btn_delete_selected']/span/span").click() driver.switch_to_alert().accept() #从frame中切回主文档 driver.switch_to.default_content() driver.find_element_by_xpath(".//*[@id='applyChanges_Button']/font").click() #切换到frame中再找到对应的元素 driver.switch_to.frame("mainscreen") driver.find_element_by_xpath(".//*[@id='btn_new_exten']/span/span").click() Select(driver.find_element_by_id('edit_VOIPUser_Type')).select_by_value("0")#创建sip账号 driver.find_element_by_id("new_ext").clear() driver.find_element_by_id("new_ext").send_keys(5001) driver.find_element_by_id("edit_fullname").clear() driver.find_element_by_id("edit_fullname").send_keys(5001) driver.find_element_by_id("edit_callerid").clear() driver.find_element_by_id("edit_callerid").send_keys(5001) driver.find_element_by_id("edit_register_name").clear() driver.find_element_by_id("edit_register_name").send_keys(5001) driver.find_element_by_xpath(".//*[@id='btn_save']/span/span").click() time.sleep(5) driver.find_element_by_xpath(".//*[@id='btn_new_exten']/span/span").click() Select(driver.find_element_by_id('edit_VOIPUser_Type')).select_by_value("1")#创建iax账号 driver.find_element_by_id("new_ext").clear() driver.find_element_by_id("new_ext").send_keys(5002) driver.find_element_by_id("edit_fullname").clear() driver.find_element_by_id("edit_fullname").send_keys(5002) driver.find_element_by_id("edit_callerid").clear() driver.find_element_by_id("edit_callerid").send_keys(5002) driver.find_element_by_xpath(".//*[@id='btn_save']/span/span").click() time.sleep(5) driver.find_element_by_xpath(".//*[@id='btn_new_exten']/span/span").click() Select(driver.find_element_by_id('edit_VOIPUser_Type')).select_by_value("2")#创建iax账号 driver.find_element_by_id("new_ext").clear() driver.find_element_by_id("new_ext").send_keys(5003) driver.find_element_by_id("edit_fullname").clear() driver.find_element_by_id("edit_fullname").send_keys(5003) driver.find_element_by_id("edit_callerid").clear() driver.find_element_by_id("edit_callerid").send_keys(5003) driver.find_element_by_xpath(".//*[@id='btn_save']/span/span").click() time.sleep(5) #从frame中切回主文档 driver.switch_to.default_content() driver.find_element_by_xpath(".//*[@id='applyChanges_Button']/font").click() time.sleep(3) driver.find_element_by_xpath(".//*[@id='nav']/ul/li[6]/a ").click() driver.find_element_by_id("extstatus").click() driver.switch_to.frame("mainscreen") img_url=driver.find_element_by_xpath(".//*[@id='table_Ext_list']/tbody/tr[2]/td[1]/img").get_attribute('src') img_name=img_url.split('/')[4] if img_name=="status_gray.png": pass else: driver.get_screenshot_as_file(u"D:/python/selenium/error_png/2.ext/2.1/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3]) time.sleep(10)#等待10 except: driver.get_screenshot_as_file(u"D:/python/selenium/error_png/2.ext/2.1/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3]) def tearDown(self): time.sleep(3) self.driver.quit() self.assertEqual([],self.verificationErrors)if __name__=="__main__": suite=unittest.TestSuite() suite.addTest(Createext("test_createext")) unittest.TextTestRunner().run(suite)
1.这边主要通过driver.switch_to.frame(“mainscreen”)这句话来切入到id=”mainscreen”的嵌套中,当然也可以用name,tag_name,只要在括号中填入对应的即可,通过这句话,切入到嵌套中之后,就可以按之前用firebug定位到的元素进行编写即可
2.driver.switch_to.default_content()这句话是退出原来的嵌套回到原来的主文档,就可以在原来的主文档操作,所以这边主要用firebug查看下,到底你对应的元素是在哪个iframe中
3.driver.switch_to.parent_frame()可以看到parent这个词,就是父的意思,主要遇到的是多个嵌套的问题,可能嵌套里面还有一个嵌套,比如
<html> <iframe id="mainscreenA"> <iframe id="mainscreenB" / > </iframe></html>
这时候你需要进入到B iframe处理完后又要退回Aiframe,就需要用到这个
driver.switch_to.frame("mainscreenA")#进入Adriver.switch_to.frame("mainscreenB")#进入Bdriver.switch_to.parent_frame() #退回A,如果当前是主文档,则无效果
4.这个代码中还有一个获取图片的名字,其实在很多爬虫图片中经常会爬取图片名,这边主要用到
img_url=driver.find_element_by_xpath(".//*[@id='table_Ext_list']/tbody/tr[2]/td[1]/img").get_attribute('src') img_name=img_url.split('/')[4]
通过获得src的属性,获得图片的源地址src=”../images/status_gray.png”
通过split可以找到对应的图片名字
—————————————————–分割线—————————————————–
用实际用例代码长期更新,介绍selenium使用中的知识小点,希望大家关注
关注微信公众号:
阅读全文
0 0
- python3.5+selenium3.4自动化测试5_frame中的对象
- python3.5+selenium3.4自动化测试2_参数化
- python3.5+selenium3.4自动化测试8_selenium框架1.0
- python3.5+selenium3.4自动化测试4_随机组合的用户名和密码登陆
- python3.5+selenium3.4自动化测试1_错误图片用时间命名保存
- python3.5+selenium3.4自动化测试3_下拉框循环选择
- python3.5+selenium3.4自动化测试6_selenium的Webdriver-API整理(上)
- python3.5+selenium3.4自动化测试7_selenium的Webdriver_API整理(下)
- python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)
- python3.5+selenium3.4自动化测试6_selenium的Webdriver-API整理(上)
- python3.5+selenium3.4自动化测试10_selenium框架2.0-unittest(下)
- python3 + selenium3 web自动化测试环境搭建
- 测试笔记第一天----python3.6+selenium3.5环境搭建
- Java+Selenium3基础篇5-第一个自动化测试脚本
- Selenium3.0 自动化测试
- Selenium3.0 自动化测试
- Selenium3.0 自动化测试-简介
- 基于selenium3+python3.6.x+chrome57.x的自动化测试环境搭建
- java常见包名类型
- Java Number & Math 类
- ExcelUtil通用的excel处理类
- long包中的八大基本包装类
- switch mii psgmii mdio 之间的关系
- python3.5+selenium3.4自动化测试5_frame中的对象
- 深层神经网络——多层网络解决异或运算
- spring整合quartz并持久化
- 苹果appstore审核等待很长时间的解决方案
- 中兴新支点操作系统——菜单小教程
- 深入浅出RxJava(一:基础篇)
- LNK2019无法解析的外部符号 DriverEntry,该符号在函数 FxDriverEntryWorker 中被引用
- Mob短信验证
- Android中小视频录制,预览