Appium Desired Capabilities
caps为Appium Client向Appium Server发送的,其内容为一个json格式的键值对,详细情况请访问
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md
如:
{
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 7",
"automationName": "XCUITest",
"app": "/path/to/my.app"
}
以上也可以通过Appium Inspector通过脚本录制生成
如果脚本使用的python语言时,可将上面的内容定义为字典,如下:
caps={
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 7",
"automationName": "XCUITest",
"app": "/path/to/my.app"
}
- platformName
平台名字,如:ios、android
- platformVersion
对应的平台版本
- deviceName
设备名
- automationName
自动
- appPackage
应用的包名
- appActivity
应用的Activity
以上两个是怎么找到的,即app的入口有哪些呢?
adb logcat | grep -i displayed
adb shell dumpsys activity activities top
- autoGrantPermissions
解决启动时权限弹框问题
- unicodeKeyboard
使用unicode编码方式发送字符创串
- resetKeyboard
将键盘隐藏
以上解决了中文输入的问题
启动时超时问题
隐式等待
self.driver.implicitly_wait(10)
显示等待
中文问题
元素定位
- id
- xpath
通过xpath函数,contains
//*[contains(@resource-id, 'text') and @text='股票']
通过xpath语法进行定位
xpath语法:http://www.w3school.com.cn/xpath/index.asp
- xpath通过@属性方式
//android.widget.TextView[@text='股票'])[1]
//android.widget.TextView[@instance=2]
- xpath的and语法
//android.widget.TextView[@text='股票' and @resource-id='com.xueqiu.android:id/text']
- xpath的*语法:所有的节点
//*[@text='股票' and @resource-id='com.xueqiu.android:id/text']
-
accessiblity id
-
class_name
import pytest
import unittest
from appium import webdriver
class TestXueqiu(unittest.TestCase):
def setUp(self):
print("setUp")
caps = {}
caps["platformName"] = "android"
caps["deviceName"] = "demo"
caps["appPackage"] = "com.xueqiu.android"
caps["appActivity"] = ".view.WelcomeActivityAlias"
caps["autoGrantPermissions"] = "true"#解决权限问题
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
self.driver.implicitly_wait(10)
def test_set_stock(self):
self.driver.find_element_by_id("tv_search").click()
self.driver.find_element_by_id("search_input_text").send_keys("pdd")
if(len(self.driver.find_elements_by_id("follow_btn"))>0):
self.driver.find_element_by_id("follow_btn").click()
self.driver.find_element_by_xpath("//*[@text='下次再说']").click()