
python自动化9 处理常见自动化场景方法(批量处理一组对象、层级定位、网页嵌套定位、弹窗识别(js弹窗))
发布日期:2023-05-26 14:16:26
浏览次数:1
分类:技术文章
本文共 2260 字,大约阅读时间需要 7 分钟。
批量处理一组对象
webdriver使用find element方法定位一个特定的对象,不过我们有时需定位一组对象,webdriver同样提供了定位一组元素的方法叫find elements,定位一组对象一般用于以下场景:
1、批量操作对象,比如将页面上的checkbox都勾选上。 2、先获取一组对象,再在这组对象中过滤需要具体定位的一些对象。有多个选择框时,把选择框全部读出来放入到列表中,再以遍历的方式勾选上。
import sys ,ossys.path.append(os.getcwd()+'/../test_data')from test_data.web_driver_utils import WebDriverimport timeurls = 'http://127.0.0.1/zentao/user-login.html'driver = WebDriver()driver.get_urls(urls)eles = driver.find_element_xpath('//input[contains(@name,"checkbox")]')for e in eles: time.sleep(1) e.click()
层级定位
在实际的项目测试中,经常会遇到无法直接定位到需要选取的元素,但是其父元素比较容易定位,通过定位父元素再遍历其子元素选择需要的目标元素,或者需要定位某个元素下所有的子元素。
层级定位的思想是先定位父对象,然后再从父对象中精确定位出其我们需要选取的后代元素。driver.find_element_by_id('***').find_element_by_link_text('***')
网页嵌套定位
html—A中嵌html—B(iframe实现),由页面A跳转到页面B中,识别页面B中的元素。
在web应用中经常会出现frame嵌套的应用,假设页面上有A,B两个frame,其中B在A内,那么定位B中的内容则需要先到A,再到B。
switch_to_frame方法可以把当前定位的主题切换到frame里,在frame里实际是嵌套了另外一个页面,而webdriver每次只能在一个页面识别,所以需要用switch to frame方法去获取frame中嵌套的页面。class WebDriver: def __init__(self,driver_path=config_u.get_driver_path): path = Service(driver_path) self.driver = webdriver.Firefox(service=path) self.mouse = ActionChains(self.driver) def switch_to_frame_xpath(self,xpath_path): #页面A跳转到页面B self.driver.switch_to.frame(xpath_path) def switch_to_frame_default(self): # 页面B跳转主页面(默认页面) self.driver.switch_to.default_content()
弹窗识别(js弹窗)
有时会出现,弹窗元素无法识别。
class WebDriver: def __init__(self,driver_path=config_u.get_driver_path): path = Service(driver_path) self.driver = webdriver.Firefox(service=path) self.mouse = ActionChains(self.driver) def get_urls(self,urls): try: self.driver.get(urls) log_utils.print_file_log('info', '窗口打开成功') except Exception as e: log_utils.print_file_log('error','url错误:'+str(e)) def switch_to_alter(self): #跳转到js弹窗 s = self.driver.switch_to.alert return s def alter_get_element(self): #js内的相关操作 s = WebDriver.switch_to_alter() s= s.text #获取文本 s.dismiss() #点击取消 s.accept() #点击确认 s.send_keys('ssss') #输入
driver.witch_to.alert.send_keys(‘ssss’)单独使用时不会输入;
必须和driver.witch_to.alert.accept()同时使用。(selenium的一个显示bug)转载地址:https://blog.csdn.net/xiaoqiukuzi/article/details/129165644 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2023年05月15日 19时07分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
switch-scanf-break-continue简单知识点
2019-09-17 10:17:16
结构体笔记
2019-09-17 10:17:16
指针笔记_4
2019-09-17 10:17:15
指针笔记_3
2019-09-17 10:17:15
指针笔记_2
2019-09-17 10:17:14
指针笔记_1
2019-09-17 10:17:14
C语言编程中遇到的问题
2019-09-17 10:17:13
Linux笔记整理
2019-09-17 10:17:13
Linux常见问题一
2019-09-17 10:17:12
STM32启动模式及程序下载原理总结
2019-09-17 10:17:11
STM32操控外设为什么要先使能时钟
2019-09-17 10:17:10
结构体作用(STM32)
2019-09-17 10:17:10
STM32的I/O口的8种工作模式
2019-09-17 10:17:09
工业相机、镜头、选型计算方式
2019-09-17 10:17:08
工业相机基础知识
2019-09-17 10:17:08
工业相机之镜头基础知识
2019-09-17 10:17:08
工业相机之透镜成像
2019-09-17 10:17:07
工业相机之小孔成像
2019-09-17 10:17:07
Linux之MySQL的常用基本操作
2019-09-17 10:17:06
Linux之软件安装管理
2019-09-17 10:17:05