今天有时间了,想好好的把之前遇到过的自动化问题总结一下,以后有新的总结再更新

目录:

一、上传文件(4.11)

二、下拉框选择(4.11)

三、下拉框隐藏元素定位(6.20)

附录:

一、上传文件

利用鼠标pymouse、键盘pykeyboard操作

import pyperclip
from pykeyboard import PyKeyboard
from pymouse import PyMouse def upload_file(self, fileName):
"""PyUserInput方法:上传文件""" # 创建鼠标对象
k = PyKeyboard()
# 创建键盘对象
m = PyMouse()
# 模拟快捷键Command+Shift+G
k.press_keys(["Command", "Shift", "G"])
# 输入文件路径
x_dim, y_dim = m.screen_size()
# //点击屏幕中间,除法取整数
m.click(x_dim // 2, y_dim // 2, 1) # 点击,想x,y坐标,button:-1表示左键,-2表示右键,n:默认1次,2双击
# 复制文件文件全路径
pyperclip.copy(fileName)
# 粘贴路径,模拟快捷键Command+V
k.press_keys(["Command", "V"])
k.tap_key("Shift") # 加上这个之后才能点击回车(未知情况)
for i in range(2):
k.press_key("return")
time.sleep(2) # 调用上传文件方法
def uploadImg(self, imgLoc, imgName):
"""上传图片文件""" self.el_click(imgLoc)
Fun().upload_file(loc.filePathData + imgName)
sleep(2)

二、下拉框选择  返回目录

1、Select下拉框

   # ①在basePage定义Select下拉选择方法
def webDriverWait(self, loc):
"""显式等待,查找单元素"""
WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(loc))
return self.find_element(loc) def el_select(self, loc, text):
"""下拉框选择元素"""
Select(self.webDriverWait(loc)).select_by_visible_text(text) # ②定位Select元素
province_loc = (By.CSS_SELECTOR, "form>div:nth-child(4)>div>div>label:nth-child(1)>select")
# ③调用Select方法
self.el_select(loc.province_loc, loc.province)

2、非Select下拉框

1)方法一:

优:定位元素写法简洁,定位速度较快

缺:不利于维护,定位不明确

    def els_click_index(self, loc, index):
"""点击多元素事件:坐标"""
self.webDriverWaits(loc)[index-1].click() # 定位多元素
regionName1_loc = (By.CSS_SELECTOR, "ul>li>span")
  
# 定位多元素,并根据元素的坐标位置,进行选择
self.els_click_index(loc.regionName1_loc, 2) # 坐标点:选择第二个下拉框,运行22s283ms

2)方法二:

优:定位元素写法简洁,定位元素明确利于维护

缺:定位速度最慢

    def els_click(self, loc, name):
"""点击多元素事件:元素"""
list = self.webDriverWaits(loc)
for i in list:
if name == i.text:
i.click()
time.sleep(2) # 定位元素
  regionName2 = "新建区域2"
regionName2_loc = (By.XPATH, "//ul/li/span") # 定位多元素,并且调用方法点击指定名元素
self.els_click(loc.regionName2_loc, loc.regionName2) # 多元素方法:选择第二个下拉框,运行25s624ms

3)方法三:(推荐)

优:定位元素明确利于维护,定位速度最快

缺:定位元素写法较长

    def el_click(self, loc):
"""点击单元素事件"""
self.webDriverWait(loc).click() # 定位多元素,并模糊查找元素
regionName2 = "新建区域2"
regionName3_loc = (By.XPATH, f"//ul/li/span[contains(text(),'{regionName2}')]") # 定位多元素,并且点击指定名元素
self.el_click(loc.regionName3_loc) # 多元素简写:选择第二个下拉框,运行20s246ms

综合以上三种方法,方法三效果更好,选择元素目的明确,代码运行时间更少,代码更简洁。

3、下拉框隐藏元素定位

1)方法一:

location_once_scrolled_into_view,滚动到网页上的特定元素

    def el_clickBoxView(self, loc):
"""点击下拉框隐藏的元素"""
self.webDriverWait(loc).location_once_scrolled_into_view
self.el_click(loc) # 元素定位
regionName3_loc = (By.XPATH, f"//ul/li/span[contains(text(),'{regionName2}')]")
# 进行定位
self.el_clickBoxView(loc.regionName3_loc)

2)方法二:

    def executeScript(self, js, loc):
"""执行JS元素"""
if loc == None:
return self.driver.execute_script(js)
else:
return self.driver.execute_script(js, self.webDriverWait(loc)) regionName2 = contractorData['regionName']
regionName3_loc = (By.XPATH, f"//ul/li/span[contains(text(),'{regionName2}')]")
regionName_js = "arguments[0].scrollIntoView(false);"
regionName_click_js = "arguments[0].click();" # 下拉框到不可见的元素:JS方法
self.executeScript(loc.regionName_js, loc.regionName3_loc)
self.executeScript("arguments[0].click();", loc.regionName3_loc)

附录:  返回目录

参考文章

木下瞳selenium 定位下拉选择框元素

泠月飞花selenium Xpath应用疑难一:contains的用法

Listen-Yselenium~进阶操作定位一组元素、定位多层框架/窗口、下拉框处理、提示框处理、上传文件操作

菡哥125Python中pyautogui库的最全使用方法

泡沫小哥哥Selenium中错误:selenium.common.exceptions.ElementClickInterceptedException: Message: element click inte

守护@往昔13 - selenium 常见操作,js操作-将元素滚动到页面可见区域

【Python自动化】之特殊的自动化定位操作的更多相关文章

  1. appium+python 微信小程序的自动化

    sudo kill -9 $(lsof -i:8889 -t) mitmweb -p 8889 -s addons.py mitmdump -q  -p 8889 -s addons.py http: ...

  2. Python+Appium自动化测试(3)-编写自动化脚本

    之前一篇博客已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登 ...

  3. python自动化测试(2)-自动化基本技术原理

    python自动化测试(2) 自动化基本技术原理 1   概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...

  4. python自动化测试(3)- 自动化框架及工具

    python自动化测试(3) 自动化框架及工具 1   概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...

  5. 转载:python + requests实现的接口自动化框架详细教程

    转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...

  6. python + requests实现的接口自动化框架详细教程

    前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...

  7. Python实现扫描作业配置自动化

    持续集成平台接入扫描作业是一项繁琐而又需要细致的工作,于是趁着闲暇时间,将代码扫描作业用Python代码实现了配置自动化. 每次配置作业的过程中,都会在checkcode1或者checkcode3上 ...

  8. 基于Python实现的死链接自动化检测工具

    基于Python实现的死链接自动化检测工具   by:授客 QQ:1033553122 测试环境: win7 python 3.3.2 chardet 2.3.0 脚本作用: 检测系统中访问异常(请求 ...

  9. Python接口测试框架实战与自动化进阶☝☝☝

    Python接口测试框架实战与自动化进阶☝☝☝  一.fiddler在工作中的运用  1.如何抓接口 抓紧手机端接口 ①.在电脑终端输入:ipconfig ,找到电脑ip ②.打开手机,连接WiFi, ...

  10. airtest自动化中的poco+python连接手机实现ui自动化

    airtest:http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html官网地址 AirtestIDE:跨平台的UI自动化测试编 ...

随机推荐

  1. 【资料分享】全志科技T507-H工业核心板规格书

    1 核心板简介 创龙科技SOM-TLT507是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53全国产工业核心板,主频高达1.416GHz.核心板CPU.ROM.RAM.电源.晶 ...

  2. Java核心字符串String进阶

    字符串对象 字符串是对象,不是简单数据类型 封装在java.lang包,自动导入 创建字符串对象 常见创建一个字符串对象有下面2个方法 String str=new String("chen ...

  3. [oeasy]python024_vim读取文件_从头复制到尾_撤销_重做_reg_寄存器

    Guido的简历 回忆上次内容 python 是Guido制作的语言 从Guido刚入职场 就开始的项目 python这个项目 一直跟随Guido   Guido 曾经在 cwi cnri beope ...

  4. TypeScript快速上手

    TypeScript快速上手 参考TypeScript零基础入门 轻松搞定ts进行整理 TS文档:TypeScript: The starting point for learning TypeScr ...

  5. c++ 17 demo

    1 // Cpp.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. 2 // 3 4 #include <iostream> 5 #includ ...

  6. 写写Redis十大类型zset的常用命令

    其实这些命令官方上都有,而且可读性很强,还有汉化组翻译的http://redis.cn/commands.html,不过光是练习还是容易忘,写一写博客记录一下 从zset类型开始写||zset类型适合 ...

  7. Scratch源码下载 | 3D钻石

    程序说明: <3D钻石>是一个利用Scratch平台创作的独特艺术作品.此程序在屏幕上呈现一个精致的3D钻石模型,允许用户通过鼠标操作来旋转和查看钻石的不同角度.该程序还提供了修改钻石参数 ...

  8. 【SpringBoot】Re 01 补充学习

    对SpringBoot后续的再补充学习: 使用IDEA创建项目不勾选任何组件 默认的POM结构: <?xml version="1.0" encoding="UTF ...

  9. LogCat连接安卓手机拉取日志到本地(Unity开发版)

    unity开发游戏的时候经常会碰到安卓手机真机报错/崩溃,定位问题需要拉取安卓手机上的日志到电脑上来查看. 1. unity安装的时候,勾选安卓模块(sdk这些记得勾选安装) 2. 打开对应安卓模块个 ...

  10. FFmpeg在游戏视频录制中的应用:画质与文件大小的综合比较

    我们游戏内的视频录制目前只支持avi固定码率,在玩家见面会上有玩家反馈希望改善录制画质,我最近在研究了有关视频画质的一些内容并做了一些统计. 录制视频大小对比 首先在游戏引擎中增加了对录制mp4格式的 ...