Appium Desired Capabilities

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


你可能感兴趣的:(Appium)