Python+Appium寻找蓝牙/wifi匹配

Posted luobobobo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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匹配的主要内容,如果未能解决你的问题,请参考以下文章

RW007系列综合实战2使用RW007模块连接小米蓝牙温湿度计2代

python+appium 已解决真机运行appium报错“WebDriverException: Message: A new session could not be created. ((代

如何防止用户关闭 GPS、Wifi 和蓝牙?

如何连接iphone与macbook air

使用 python 寻找低功耗蓝牙

ADB+Python+Appium连接真机操作步骤说明及报错解决方案