当前位置: 首页 > 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

相关文章:

  • 「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编程之建造者模式
  • 日本人做的招聘网站/宁波网络推广优化公司
  • 女网友叫我一起做优惠券网站/海外网络推广服务
  • 大连博硕网站建设/品牌网络营销案例
  • 制作静态网站/app香港账号
  • 网站管理工作流程/百度帐号注册
  • wordpress乐器模版/怎么优化关键词排名优化