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()

免责声明:文章转载自《Python+Appium寻找蓝牙/wifi匹配》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇UI 自动化中如何处理上传文件事件[转载]nc命令详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(六) 托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。   自建还是托管? 在开始之前,我们先来讨论一个问题——是自建容器服务还是托管到云容器服务? 这里笔者建议大家托管到云容器服务。对于中小团队来说,很多情况下,团队中的运维人员是缺...

配置管理工具比較

配置管理工具比較怎样选择配置管理工具  每一个软件项目,不管是project类项目,还是产品类项目,都必须经历需求分析、系统设计、编码实现、集成測试、部署、交付、维护和支持的过程。在这个过程中,将生成各种各样不同的工件,包含文档、源程序、可执行代码、支持库。更可怕的是,频繁出现的变更是不可避免的,因此面向如此庞大且不断变动的信息集,怎样使其有序、高效地存...

adb命令(笔记)

1、adb shell su     进入root管理员权限(前提是手机已root) 2、chmod 可以修改文件夹的权限:   $ adb shell   $ su   # chmod -R 777  /data/data/com.tencent.mm/ MicroMsg       -R或者–recursive参数:递归处理,将指定目录下的所有文件及子...

logstash5安装并实现mariadb数据写入到elasticsearch

java环境这里默认安装了 ,一般源码安装,这里就不说了 一、安装logstash 安装logstash可以用yum安装,也可以用源码安装: yum安装: 1.导入GPG: rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 2.创建repo文件,vim /etc/yum.repo...

微信小程序 云开发中部分用户获取不到unionId

在微信小程序 云开发中,部分用户无法获取到unionId ,但是有的用户可以获取到 上面这个用户通过手机号登录获取到UnionId的,没有获取的在result中没有uninid, 因为公司业务是以手机号来区分用户的,并没有着重与unionid ,所以能不能获取到无所谓,但是我我纳闷为啥有的可以获取到,有的无法获取到。 后来看了微信官方的技术文档,知道了为什...

rbac——界面、权限

一、模板继承 知识点:   users.html / roles.html 继承自 base.html   页面滚动时,固定 .menu { background-color: bisque; position: fixed; top: 60px; bottom: 0px; left: 0px; 200px...