Python+Appium寻找蓝牙/wifi匹配

前言:

此篇是介绍怎么去寻找蓝牙,进行匹配。主要2个问题点:

1.在不同环境下,搜索到的蓝牙数量有变

2.在不同环境下,搜索到的蓝牙排序会变

简单思路:

将搜索出来的蓝牙名字添加到一个list去,然后在去匹配list里是否有你要匹配的蓝牙,找到了就点击,没找到,又进行下一次寻找,知道找到为止

简单代码:

#coding:utf-8
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
bluetoothName="iPhone"
desired_caps = {‘platformName‘: ‘Android‘,
                ‘deviceName‘: ‘9a762346‘,
                ‘platformVersion‘: ‘6.0.1‘,
                ‘noReset‘: True,
                ‘appPackage‘: ‘com.android.settings‘,
                ‘appActivity‘: ‘.Settings‘}
driver=webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)
size = driver.get_window_size()
print (‘屏幕的分辨率: %s‘% size)
print (‘启动成功‘)
WebDriverWait(driver,30,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="蓝牙"]‘)).click()
print(‘正在搜索蓝牙设备,请等待30s‘)  #因为不清楚蓝牙停止搜索的机制是什么,这里就让强制等待30s
time.sleep(10)
print(‘已经搜索10s,还剩20s‘)
time.sleep(10)
print(‘已经搜索20s,还剩10s‘)
time.sleep(10)
print(‘已经搜索30s,还剩0s‘)
print(‘搜索完毕‘)
a=driver.find_elements_by_id(‘android:id/title‘)
b=[]  # 创建一个空的list,用于后面存放打印的文本
for j in range(1,11):  #控制滑动次数
    for i in range(10):  #这个10是a的数量。当然也可以直接 len(a)
        b.append(a[i].text)
    x1=size[‘width‘] * 0.5
    y1=size[‘height‘] * 0.75
    y2=size[‘height‘] * 0.25
    driver.swipe(x1, y1, x1, y2, 120)   #这个 1 20  滑动时间建议不要太多,很容滑过去
    time.sleep(2)  # 这个sleep必须要有,没有的话就会导致滑太快

    if "iPhone" in b:
        WebDriverWait(driver,60,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="iPhone"]‘)).click()
        print(‘第‘+str(j)+‘次滑动设备找到蓝牙‘)
        break   #找到了就跳出循环
    else:
        print(‘第‘+str(j)+‘次滑动设备蓝牙未找到,2s后进行下一次寻找‘)

try:
    WebDriverWait(driver,20,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="配对"]‘)).click()
    print(‘点击 配对完成‘)
except:
    print(‘配对按钮没找到(20s),设备蓝牙未找到‘)

同理  WiFi也可以用同样的方法去寻找

#coding:utf-8
import unittest
from common.base import BaseApp
from appium import webdriver
from common.logger import Log
from selenium.webdriver.support.ui import WebDriverWait
import time

desired_caps = {‘platformName‘: ‘Android‘,
                ‘deviceName‘: ‘9a762346‘,
                ‘platformVersion‘: ‘6.0.1‘,
                ‘noReset‘: True,
                 ‘unicodeKeyboard‘: True,
                 ‘resetKeyboard‘: True,
                ‘appPackage‘: ‘com.android.settings‘,
                ‘appActivity‘: ‘.Settings‘}

u‘‘‘测试wifi连接‘‘‘
class Test(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver=webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)
        cls.base=BaseApp(cls.driver)
        cls.log=Log()
    def setUp(self):
        pass

    def testName(self):
        self.log.info(‘设备启动成功‘)
        self.size = self.driver.get_window_size()
        WebDriverWait(self.driver,30,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="WLAN"]‘)).click()
        WebDriverWait(self.driver,30,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="刷新"]‘)).click()
        self.log.info(‘点击刷新成功‘)
        time.sleep(15)
        self.log.info(‘15s搜索完毕‘)
        a=self.driver.find_elements_by_id(‘android:id/title‘)
        b=[]
        for j in range(1,31):
            for i in range(len(a)):
                try:
                    b.append(a[i].text)
                except:
                    self.log.info(‘添加文本时发生错误‘)  

            if "iPhone罗" in b:
                WebDriverWait(self.driver,60,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="iPhone罗"]‘)).click()
                self.log.info(‘第‘+str(j)+‘次滑动设备找到wifi‘)
                self.log.info(b)
                break
            else:
                x1=self.size[‘width‘] * 0.5
                y1=self.size[‘height‘] * 0.75
                y2=self.size[‘height‘] * 0.50
                self.driver.swipe(x1, y1, x1, y2, 200)
                self.log.info(list(set(b)))
                time.sleep(2)
                self.log.info(‘第‘+str(j)+‘次滑动设备wifi未找到,2s后进行下一次寻找‘)

        try:
            WebDriverWait(self.driver,10,1).until(lambda x:x.find_element_by_id(‘com.android.settings:id/password‘)).send_keys(‘11111111111111‘) #输入密码
            self.log.info(‘输入密码完成‘)
            time.sleep(2)
            WebDriverWait(self.driver,10,1).until(lambda x:x.find_element_by_xpath(‘//*[@text="连接"]‘)).click()
            self.log.info(‘点击连接成功‘)
        except:
            self.log.info(‘连接按钮没找到(10s),WiFi未找到‘)

    def tearDown(self):
        pass

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

if __name__ == "__main__":
    #import sys;sys.argv = [‘‘, ‘Test.testName‘]
    unittest.main()

原文地址:https://www.cnblogs.com/luobobobo/p/9679388.html

时间: 2024-11-13 02:26:20

Python+Appium寻找蓝牙/wifi匹配的相关文章

获取appPackage和appActivity(python+appium)

(一般情况下,这两个参数可以让开发提供:如果有某种原因不能获取,而你只有安装包,那么可以通过以下步骤获取) 步骤一: 连接真机或开启安卓模拟器,打开Appium.(前提是python+appium环境是OK的) 步骤二: 在真机或模拟器上打开需要获取appPachage和appActivity的apk 步骤三: 开启日志输出(进入cmd,执行adb logcat>D:/log.txt)--路径自己随意哈 步骤四: 找到你刚输出的日志,打开日志,ctrl+f搜索下 Displayed,就能看到你需

Python + Appium 环境搭建

---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好,从SVN上获取即可,解压,如下 2   Appium环境搭建 Appium是一个开源的,适用于原生或者移动网络和混合应用程序在 iOS 和 Android 平台上的的开源自动化测试框架. 2.1  安装Node.js 点击安装文件,下一步下一步直接安装,安装成功后,输入cmd打开windows的命

ESP32-DOWDQ6蓝牙&Wifi 两个可单独控制的 CPU 内核

乐鑫(Espressif Systems)研发设计IoT业内集成度最高.性能最稳定.功耗最低的无线系统级芯片. ESP32-D0WDQ6集成无线2.4 GHz Wi-Fi和蓝牙双模的单芯片方案,具有两个可单独控制的CPU内核,采用台积电(TSMC)超低功耗40纳米工艺,拥有最佳的功耗性能.射频性能.稳定性.通用性和可靠性,适用于各种应用和不同功耗需求. ESP32系列产品型号包括ESP32-D0WDQ6,ESP32-D0WD,ESP32-D2WD,ESP32-S0WD ESP32-D0WDQ6:

基于python+appium通过图片对比来做的UI自动化

1.python + appium +图片对比实现UI自动化:背景:当手机需要适配不同的语言时,测试过程中易出现因为语言不熟悉,导致UIbug被遗漏(例如setting中的描述性文字显示不完整等等问题)环境搭建:需使用模块PIL,Windows版本链接地址:http://pythonware.com/products/pil/ubuntu (使用16.04虚拟机):sudo apt-get install python-imaging安装过程遭遇Unable to acquire the dpk

搭建python+appium环境的时候遇到 'could not find adb.exe!'的问题

搭建Android环境的时候遇到 'could not find adb.exe!'的问题 如果是在的C:\android-sdk-windows\tools目录下并没有adb.exe这个可执行文件.并且当打开Eclipse时,有关Android的插件会报错.这时你就应该这样做: 首先,改一下系统的环境变量,把原来的C:\android-sdk-windows\tools改成C:\android-sdk-windows\platform-tools. 其次,把C:\android-sdk-win

Python+OpenCV图像处理之模板匹配

模板匹配就是在整个图像区域中发现与给定子图像匹配的小块区域 在OpenCV中,提供了相应的函数完成这个操作: matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像 minMaxLoc 函数:在给定的矩阵中寻找最大和最小值,并给出它们的位置 几种常见的模板匹配算法: ①TM_SQDIFF是平方差匹配:TM_SQDIFF_NORMED是标准平方差匹配.利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大. ②TM_CCORR是相关性匹配:TM_CCORR_NORMED

python appium环境搭建

appium是什么? 1,appium是开源的移动端自动化测试框架:2,appium可以测试原生的.混合的.以及移动端的web项目:3,appium可以测试ios,android应用(当然了,还有firefox os):4,appium是跨平台的,可以用在osx,windows以及linux桌面系统上: 这里我们配置Android端的测试环境. 对于Android移动端的测试我们首先需要安装的是两个: 1.JDK的安装,这个就不赘述了,自行百度 2.Android SDK的安装配置,参考:htt

Python Appium 开启Android测试之路

1.获取 Android app的Activity 打开终端cmd,先cd进入到刚才下载的“新浪.apk”目录下,然后使用aapt dump badging xxx.apk命令获取包内信息.注意,启动类名称一个字母都不能错. aapt dump badging 新浪.apk cat>d:/log.txt     这样可以将信息指定到某一文件下然后 查看 2.启动微博 #-*-coding:utf-8-*- #Time:2017/7/20 18:06 #Author:YangYangJun imp

Python(2.7.6) glob - 匹配指定模式的文件

Python 标准库的 glob 模块支持查询匹配指定模式的文件或目录.这里的模式使用的并不是正则表达式,而是通过通配符来匹配的 Unix 风格的路径名扩展. 支持的通配符: 通配符 说明 *  匹配任意个字符 ?  匹配一个字符 []  匹配括号间的任一字符,可以使用 - 表示范围  \  转义字符,如用 \? 匹配 ? 假设现在有一个名为 dir 的目录,该目录及其子目录的结构如下: ├── dir │   ├── db.conf │   ├── dir1 │   │   ├── hello