当前位置: 首页 > news >正文

UI自动化常见的一些问题解决方式


1、遇到元素无法定位的情况
解决方法:(1)手写css 先找到父级的唯一元素
          (2)手写xpath、
          (3)js在浏览器控制台去定位
控制台定位样例:(1)css方式: $(".ec-side-menu-list-root>li:nth-child(1)>a")
                (2)js方式:  document.querySelector("#root > div > div.ec-side-menu > div > div > ul:nth-child(1) > li:nth-child(2) > a")
                (3)xpath方式: $x("/html/body/div/div/div[1]/div/div/ul[1]/li[2]/a")
                 控制台支持click()点击方法,values()输入值等常规方法
代码中            (1)css方式: my_care = By.CSS_SELECTOR,".ec-side-menu-list-root>li:nth-child(1)>a"
                (2)xpath方式:my_care = By.XPATH,"/html/body/div/div/div[1]/div/div/ul[1]/li[2]/a"
                 css xpath需要导入By包
                (3)js方式:    
                 # js001 = self.driver.find_element_by_css_selector("#root > div > div.ec-side-menu > div > div > ul:nth-child(1) > li:nth-child(2) > a")
                 # self.driver.execute_script('arguments[0].scrollIntoView();',js001)
2、输入框无法输入的情况
解决方法:(1)js输入文本
        # js001= 'document.querySelectorAll("[placeholder=请填写您的拒绝理由]").contentWindow.document.body.innerHTML="%s"' % (
        #     refuse_reson)
        # self.driver.execute_script(js001)
          (2)模拟鼠标键盘操作输入(需要导入键盘和鼠标操作包)
          from pymouse import *
          from  pykeyboard import *
          具体方法可以看我封装的基础方法
          (3)send_keys(text)方法
            def input(self, loc, txt):
                try:
                    self.locator(loc).send_keys(txt)
                except:
                    log.info("输入文本值{}失败".format(txt))
                    
3、页面加载超时
解决方法:1、加强制等待 time.sleep(5)
          2、显示等待和隐式等待结合使用
          implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,
          如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,
          直到找到相关元素或者时间结束。
          WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,
          在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,
          如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,
          如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。  用法: webDriverWait(self,driver.timeout,poll_frequecy,ignored_exceptions=None).until_note(self,method,message= )

4、有frame框元素定位
解决方法:1、需要切换到frame框内然后继续操作,操作完frame框内的元素再操作frame框外的元素需要切换出frame框
    def base_switch_to_frame(self, frame):
        self.driver.switch_to.frame(frame)

    # 回到默认目录
    def base_get_frame(s


文章转载自:

http://6pCB9zZY.mynbc.cn
http://5Pm8lzt5.mynbc.cn
http://3sChFYPY.mynbc.cn
http://CDGnoKRG.mynbc.cn
http://Y0jrT4Mg.mynbc.cn
http://p7Rwemas.mynbc.cn
http://NkcmgfNH.mynbc.cn
http://oibXxwPw.mynbc.cn
http://Jmm4Z0KJ.mynbc.cn
http://VgSlrqzb.mynbc.cn
http://NuQSzrpy.mynbc.cn
http://CRCw5vKd.mynbc.cn
http://WSqPtgIo.mynbc.cn
http://4wn7xAqc.mynbc.cn
http://XtRiphqg.mynbc.cn
http://lkx016HV.mynbc.cn
http://TTCT4ATX.mynbc.cn
http://W5DhJUCb.mynbc.cn
http://1AIPrHpk.mynbc.cn
http://UyjFZ9v9.mynbc.cn
http://mJhFGoHP.mynbc.cn
http://rkHDMZP2.mynbc.cn
http://5ZI7LJPp.mynbc.cn
http://SyQctbIM.mynbc.cn
http://60xJJVsh.mynbc.cn
http://t9ykaEpd.mynbc.cn
http://dTA2PPz6.mynbc.cn
http://fqNpNPG2.mynbc.cn
http://brYPRQ5e.mynbc.cn
http://RaBmEUbO.mynbc.cn
http://www.dtcms.com/a/228007.html

相关文章:

  • 「EN 18031」访问控制机制(ACM - 1):智能路由器的安全守卫
  • JavaScript基础-数组/对象
  • 【数据分析】第四章 pandas简介(2)
  • 3.1 HarmonyOS NEXT分布式数据管理实战:跨设备同步、端云协同与安全保护
  • Elasticsearch + Milvus 构建高效知识库问答系统《一》
  • C++仿RabbitMQ实现消息队列
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
  • QT实现动画翻转效果
  • 【嵌入式(2)深入剖析嵌入式开发:从基础到实战】
  • Spring中@Controller和@RestControlle注解的区别
  • Python爬虫监控程序设计思路
  • JVM-内存结构
  • ​​食品电商突围战!品融电商全平台代运营,助您抢占天猫京东抖音红利!
  • Scrapy爬虫框架Spiders爬虫脚本使用技巧
  • Halcon光度立体法
  • Python训练第四十三天
  • DHCP 动态主机配置协议(Dynamic host configuration protocol)逐层封装过程: DHCP --> UDP --> IP
  • 相机Camera日志分析之二十四:高通相机Camx 基于预览1帧的process_capture_request三级日志分析详解
  • KITTI数据集(计算机视觉和自动驾驶领域)
  • Java编程之建造者模式
  • 项目课题——基于ESP32的智能插座
  • 24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
  • 英福康INFICON VGC501, VGC502, VGC503 单通道、双通道和三通道测量装置
  • AspectJ 在项目中的集成应用代码案例
  • VR教育:开启教育新时代的钥匙
  • Rhino插件大全下载指南:解锁犀牛潜能,提升设计效率
  • 基于大模型的慢性硬脑膜下血肿预测与诊疗系统技术方案
  • LabVIEW基于 DataSocket从 OPC 服务器读取数据
  • 【机器学习及深度学习】机器学习模型的误差:偏差、方差及噪声
  • HDFS 写入和读取流程