python自动化9 处理常见自动化场景方法(批量处理一组对象、层级定位、网页嵌套定位、弹窗识别(js弹窗))
发布日期:2023-05-26 14:16:26 浏览次数:5 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python自动化修改word实例
下一篇:python自动化8 等待处理

发表评论

最新留言

很好
[***.229.124.182]2024年04月10日 11时03分38秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章