GVKun编程网logo

Appium + python - weixin 公众号操作(python微信公众号)

4

本文将介绍Appium+python-weixin公众号操作的详细情况,特别是关于python微信公众号的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些

本文将介绍Appium + python - weixin 公众号操作的详细情况,特别是关于python微信公众号的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Appium (Windows platform): appium 运行篇(2)、Appium appium 安装不了、Appium appium 点击键盘上的 “搜索” 键的方法、Appium appium 通过 adb 无线连接 Android 真机的知识。

本文目录一览:

Appium + python - weixin 公众号操作(python微信公众号)

Appium + python - weixin 公众号操作(python微信公众号)

from appium import webdriver
from time import sleep

desired_caps = {
"platformName":"Android",
"platformVersion":"9",
"deviceName":"4871660c",
"appPackage":"com.tencent.mm",
"appActivity":".ui.LauncherUI",
"chromeOptions":"{''androidProcess'':''com.tencent.mm:tools''}",
"automationName":"Uiautomator2",
"unicodeKeyboard":True,
"resetKeyboard":True,
"noReset":True
}

driver = webdriver.Remote("http://localhost:4723/wd/hub",desired_caps)
driver.implicitly_wait(10)

try:
#点微信首页搜索按钮
driver.find_element_by_id("com.tencent.mm:id/jb").click()

#输入内容搜索
sleep(3)
id_text = ''resourceId("com.tencent.mm:id/l3").text("搜索")''
driver.find_element_by_android_uiautomator(id_text).send_keys("yoyoketang\n")

#点开公众号
sleep(3)
id_text1 = ''resourceId("com.tencent.mm:id/qm").text("从零开始学自动化测试")''
driver.find_element_by_android_uiautomator(id_text1).click()

#点击公众号菜单-2019课程
# sleep(3)
# id_text2 = ''resourceId("com.tencent.mm:id/an0").text("2019课程")''
# driver.find_element_by_android_uiautomator(id_text2).click()
# contexts = driver.contexts
# print(contexts)

#切换webview
# sleep(3)
# driver.switch_to_default_content("WEBVIEW_com.tencent.mm:tools")

#点击用户名-- 上海
# sleep(3)
# id_text3 = ''resourceId("js_author_name").text("上海悠悠")''
# driver.find_element_by_android_uiautomator(id_text3).click()
# print(driver.contexts)

#点击历史记录 -- django教程
sleep(3)
id_text4 = ''resourceId("com.tencent.mm:id/an0").text("历史记录")''
list1 = driver.find_element_by_android_uiautomator(id_text4).click()
# list1 = driver.find_elements_by_xpath("//*[@text=''历史记录'']").click()
print(type(list1),list1)
print(driver.contexts)
# driver.switch_to.context(''WEBVIEW_com.tencent.mm:tools'')
# class_text = ''className("android.widget.TextView").text("django教程")''
# driver.find_element_by_android_uiautomator(class_text).click()
# contexts = driver.contexts
# print(contexts)

# sleep(3)
# driver.switch_to.context( ''NATIVE_APP'')
#

#
#点击django合集
# id_text5 = ''resourceId("com.tencent.mm:id/cx").text("django合集")''
# driver.find_element_by_android_uiautomator(id_text5).click()
# print(driver.contexts)


# id_text6 = ''resourceId("activity-name").text("django合集")''
# apps = driver.find_elements_by_android_uiautomator(id_text6)
# for item in apps:
# print(item)

except Exception :
print("Error")
#退出微信应用
driver.quit()

Appium (Windows platform): appium 运行篇(2)

Appium (Windows platform): appium 运行篇(2)

我们将安装篇内的软件等都下载好,准备好,就开始进行如下操作。

1.打开eclipse后,扩展完android和testNG后,确保你拥有这些显示

  

  如果没有的话点击Window->Customize Perspective->Command Groups Availability  中勾选上与Android 有关的选项

 

2.点击Android SDK Manager按钮

  

3.确保如下SDK都下载了,这个下载根据你手机上的android API 版本儿下载,我的手机是4.2.1的,所以下载到API17,这个很重要,因为当运行appium的时候需要同步匹配。


4. 下载好之后,创建一个普通的java project (File->New->Java Project),然后在创建package,然后在创建一个xxx.java文件。例如:appium 像这样

5. 邮件单击appium folder,然后到Properties->Java Build Path->Libraries->Add External JARS

   将selenium,java-client-1.5.0,org.testng.eclipse_6.8.6.20141201_2240 导入进去(注:selenium的部分,要将压缩包里所有以 .jar结尾的文件全部导入进去。

6.编写xxx.java内容,如我的例子:(这个例子是针对安卓真机的例子)

 package appium;

import io.appium.java_client.AppiumDriver;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

public class appium {
    WebDriver dr;
    @Test
    public void testApp() throws MalformedURLException,InterruptedException{
        //String contact="1jyot";
        
        File app=new File("D:\\apk\\com.sina.weibo.apk");//store apk on the phone 这里是你存放要测试apk的地址
         DesiredCapabilities capabilities=new DesiredCapabilities();
         capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
         capabilities.setCapability("deviceName", "lenovo-lenovo_a828t-d1d4c874");//Lenovo A828t这里是你的机器的名称
         capabilities.setCapability("platformVersion", "4.2.1");这里是你手机的安卓版本儿,请到手机上的手机信息查看
         capabilities.setCapability("platformName", "Android");这里是你的平台信息
        // capabilities.setCapability("platformName", "Android");
         capabilities.setCapability("app", app.getAbsolutePath());这里获取你的apk
         capabilities.setCapability("appPackage", "com.sina.weibo");这里是你apk中package的信息,这些就需要你用apk反编译软件查看了
      //   capabilities.setCapability("appActivity", ".MainTabActivity");这里是你apk中启动app的那个activity的信息。

    capabilities.setCapability("appActivity", ".SwitchUser");注意:这里之所以改成这个是因为出现了一个错误叫做 never start up .MainTabActivity. current is .SwitchUser 也就是说这个activity没有被开启,目前开启的页面是.SwitchUser的activity这样就不会报错了

        // capabilities.setCapability("appPackage", "com.broadvision.myvmoso.phone.myvmoso.enterprise");
         //capabilities.setCapability("appActivity", "com.broadvision.myv_vmoso.myVmoso.MyVmosoMainActivity");//com.broadvision.myv_vmoso.myVmoso.MyVmosoMainActivity
        // capabilities.setCapability("app-wait-activity", "activity-to-wait-for");
        // dr=new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
        
         dr.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    }  
}
7. 将手机连接电脑。

    到eclipse->window->Show view->Others->Devices打开devices后,会看到你连接的手机的信息


8.打开appium

设置如下

然后,点击启动server。

在这里需要注意的是,如果你的手机是安卓4.2版本儿的,那么API就是17,appium只支持API18以上的,18以下的要用selendroid运行,也就是你要在这里选择这个

9.回到eclipse,右键点击xxx.java->Run as ->TestNG

10.最后查看appium的运行,在运行期间会出现一些问题,这些问题又可能是因为app本身引起的,有可能因为appium server引起。祝大家好运吧。

11.正确的运行结果



  


Appium appium 安装不了

Appium appium 安装不了

npm --registry http://registry.cnpmjs.org install -g appium
使用npm的国内镜像可以安装,速度很不错。
以后不想输入ip的话可以输入以下命令:
npm config set registry http://registry.cnpmjs.org
然后就可以直接输入 npm install -g appium 安装了

此时我们输入appium -doctor显示不是内部命令,这时

就需要npm --registry http://registry.cnpmjs.org install appium-doctor -g

命令来安装,由于我安装的是1.9的版本,没有这个Appium\node_modules\.bin

文件,所以无法配置环境。先前安装的1.4的版本有这个文件可以配置环境变量 

Appium appium 点击键盘上的 “搜索” 键的方法

Appium appium 点击键盘上的 “搜索” 键的方法

首先我安装的是搜狗输入法,其它的输入法没有去尝试,有兴趣的朋友可以去试一下。(微信APP)

先去cmd中查看一下你的真机中的输入法

cmd中输入 adb shell ime list -s

 

 

 

然后代码中的方法是:

public void findAccountByKeyboard() throws InterruptedException, IOException{ Thread.sleep(2000); driver.findElementById("com.tencent.mm:id/f_").click(); driver.findElementByXPath("//android.widget.TextView[@text=''Add Contacts'']").click(); driver.findElementByXPath("//android.widget.TextView[@text=''Official Accounts'']").click(); driver.findElementByXPath("//android.widget.EditText[@text=''Search Official Accounts'']").sendKeys("*****服务号"); Thread.sleep(3000); // driver.pressKeyCode(66); excuteAdbShell("adb shell ime set com.sohu.inputmethod.sogou/.SogouIME"); //再次点击输入框,调取键盘 driver.findElementByXPath("//android.widget.EditText[@text=''******服务号'']").click(); //点击右下角的搜索,即ENTER键 driver.pressKeyCode(AndroidKeyCode.ENTER); } /** * 执行adb命令 * @param s 要执行的命令 */ private void excuteAdbShell(String s) { Runtime runtime=Runtime.getRuntime(); try{ runtime.exec(s); }catch(Exception e){ System.out.println("执行命令:"+s+"出错"); } }

Appium appium 通过 adb 无线连接 Android 真机

Appium appium 通过 adb 无线连接 Android 真机

一、准备工作

1、准备一台或多台Android设备(如小米,华为),开启USB调试
2、Android设备与电脑(Mac或者Windows)在同一个局域网内
3、电脑安装好ADB工具

二、具体步骤

1.使用数据线通过USB接口将手机与电脑连接,在终端中执行如下命令:

方法一USB数据线连接:adb devices 查看设备是否连接成功。

方法二通过无线局域网连接:adb tcpip 5555(PS:5555是连接时的默认端口号,可以设置为任何未占用的端口号)

返回restarting in TCP mode port: 5555则代表服务开启成功,可以拔掉数据线断开电脑和手机的连接。

2.找到手机的IP地址,执行连接命令:
一般在设置-关于手机-状态信息-IP地址可以找到,或者执行命令:
adb shell ip -f inet addr show wlan0
找到我的手机IP10.0.1.121

 

abd connect 10.0.1.121:5555

返回connected to 10.0.1.121:5555代表连接成功
因为我们默认端口是5555,所以执行abd connect 10.0.1.121的时候相当于执行了abd connect 10.0.1.121:5555,如果adb tcpip连接的端口号不是5555时adb connect 时IP后需要需要加上端口号。
结果图:

3.断开连接,执行:adb disconnect

PS:如果手机wifi断了,也会自动中断连接,需要重新连接。

三.解决电脑和手机的连接问题

1、我们做APP自动化的时候,没有必要每台设备都通过USB连接电脑了(毕竟USB端口有限,而且有些线用久了,接触不良的说),只要知道无线连接的IP和端口10.0.1.121:5555
以python+appium脚本为例,我们的连接参数可以从

desired_caps={}
desired_caps[''platformName'']=''Android''
desired_caps[''deviceName''] = ''58d1a05c''
desired_caps[''platformVersion''] = ''7.0''
desired_caps[''appPackage''] = ''com.tencent.mm''
desired_caps[''appActivity''] = ''.ui.LauncherUI''
driver = webdriver.Remote(''http://127.0.0.1:4723/wd/hub'', desired_caps)

改成

desired_caps={}
desired_caps[''platformName'']=''Android''
desired_caps[''deviceName''] = ''10.0.1.121:5555:5555''
desired_caps[''platformVersion''] = ''7.0''
desired_caps[''appPackage''] = ''com.tencent.mm''
desired_caps[''appActivity''] = ''.ui.LauncherUI''
driver = webdriver.Remote(''http://127.0.0.1:4723/wd/hub'', desired_caps)

2、由于可以无线连接设备,在我们跑APP自动化脚本的时候还可以很好的监控设备运行过程中的电量消耗,因为连接USB时会自动充电,会导致电量计算不准确。

3、当我们需要调试自己手机时,但是手机又需要充电,明显的USB充电很慢,这时我们可以adb无线连接调试。

4、摆脱束缚,调试的时候演示也没必要带着一堆线了,比如chrome的inspect,
chrome://inspect/#devices

3.1、连接多台设备

当我们连接着两台设备时,执行
adb tcpip 5555

 

提示:error: more than one device/emulator
此时我们只需要给adb命令 加上-s参数,指定设备号即可,其他的操作基本都是一样的了。
adb -s 50f98a9f tcpip 5555

 

3.2、关于真机设备连接识别问题

1.如果List of devices attached下方没出现任何信息,就是手机没连上电脑,或者电脑上没安装手机的驱动

C:\Users\admin>adb devices
List of devices attached

2.插拔usb数据线,电脑屏幕出现无法识别的usb设备,那就是手机驱动没安装好

3.3、一 安装手机驱动

1.电脑下载一个手机助手类的管理工具,它会自动识别手机设备型号,安装驱动

2.手机开启开发者选项,在设置里面要是没看到‘开发者选项’,打开关于手机-对着版本号连着点10次(有的机型点击7次即可)就出来了

3.usb调试模式勾选

3.4、 没授权(unauthorized)

出现unauthorized是因为手机没授权给电脑连接,重新插拔数据线,勾选USB调试

C:\Users\admin>adb devices
List of devices attached
A5RNW18316011440        unauthorized

1.手机重新连上电脑,插拔下数据线,勾选USB调试

2.USB连接方式选择MTP

3.5、 adb端口冲突

1.如果出现adb server version (32) doesn''t match this client (36),这个就是adb端口冲突,被其它应用占用了,比如(91助手,手机管家之类的)

C:\Users\admin>adb devices
List of devices attached
adb server version (32) doesn''t mat
error: could not install *smartsock 通常每个套接字地址(协议/网络地址/端 could not read ok from ADB Server * failed to start daemon * error: cannot connect to daemon

2.解决办法:卸载91助手,手机管家之类的

3.6、 offline

1.输入adb devices ,一直显示设备处于offline状态,先尝试以下基本操作:

C:\Users\admin>adb devices
List of devices attached
A5RNW18316011440        offline
  • 开启usb调试模式
  • 关闭第三方手机助手软件
  • 重启adb服务

adb kill-server
adb start-server

2.查看adb版本号,是不是低了

adb -version

3.查看adb环境变量,是不是配置了多个adb

4.在手机设置中点击撤销USB调试授权,然后重新连接电脑,重新授权该电脑。

5.如果还不行的话,那就重启手机、重启电脑。

我们今天的关于Appium + python - weixin 公众号操作python微信公众号的分享已经告一段落,感谢您的关注,如果您想了解更多关于Appium (Windows platform): appium 运行篇(2)、Appium appium 安装不了、Appium appium 点击键盘上的 “搜索” 键的方法、Appium appium 通过 adb 无线连接 Android 真机的相关信息,请在本站查询。

本文标签: