appium启动失败的一些坑(已解决)(二)

相信很多新手跟我一样,在安装Java跟SDK 环境上花了很多时间,在终端显示配置信息没出错,但是跑代码的时候就是起不来,总结一下几点:
一、缺少.jar文件,这个在前一篇文章有详细描述
二、当我们查找不出是什么问题的时候,建议更换一下SDK包,我卡在这步一天,最后终于得到了解决
关于appium的安装过程,参考一下这位大哥的:https://blog.csdn.net/freeking101/article/details/107881979
这里放上我的SDK安装包,各位有需要的可以自行下载:

链接:https://pan.baidu.com/s/1GK8hwF90qG_8DmnpxG9ttQ 
提取码:mn80

下面是一些关于自动化的入门代码:

1、入门调试

from appium import webdriver
import time

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1.2"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.ss.android.ugc.aweme"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".splash.SplashActivity t9"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(10)
print(driver.page_source)

# 关闭app
driver.close_app()
# 释放资源
driver.quit()

2、查找元素

from appium import webdriver
import time

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

print(driver.current_package)
print(driver.current_activity)
time.sleep(1)
# print(driver.page_source)

# 在Android手机中 text并不是文本 而是属于标签的属性
# driver.find_element_by_xpath("//*[text()='显示']").click()

el= driver.find_element_by_xpath("//*[@text='显示']")

print(el.size)
print(el.text)
print(el.get_attribute("text"))
print(el.location)
time.sleep(1)
print(driver.current_package)
print(driver.current_activity)

time.sleep(3)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()

3、基本操作

from appium import webdriver
import time

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1.2"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(1)

# driver.install_app(r"C:UsersbccDesktoppycodeappcodeiBiliPlayer-bili.apk")

if driver.is_app_installed("tv.danmaku.bili"):
    driver.remove_app("tv.danmaku.bili")

driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/search']").click()

time.sleep(1)
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").send_keys("abc")
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").send_keys("123")
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").send_keys("张三")

time.sleep(2)
driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']").clear()


# 关闭app
driver.close_app()

time.sleep(2)
# 释放资源
driver.quit()

4、模拟手势

from appium import webdriver
import time

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(1)

# 获取当前屏幕的分辨率
size = driver.get_window_size()
print(size)
width = size["width"]
height = size["height"]

driver.swipe(start_x=width/2,start_y=height/3*2,end_x=width/2,end_y=height/3)

# el1 = driver.find_element_by_xpath("//*[@text='通知']")
# el2 = driver.find_element_by_xpath("//*[@text='WLAN']")
#
# driver.scroll(el1,el2)
time.sleep(2)



# 关闭app
driver.close_app()

time.sleep(2)
# 释放资源
driver.quit()

5、拖拽

from appium import webdriver
import time

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.vphone.launcher"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".launcher3.Launcher"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(1)
el1 = driver.find_element_by_xpath("//*[@text='酷安']")
el2 = driver.find_element_by_xpath("//*[@text='京东']")


driver.drag_and_drop(el1,el2)

time.sleep(2)

# 关闭app
driver.close_app()
# 释放资源
driver.quit()

6、高级模拟手势

from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(1)

el1 = driver.find_element_by_xpath("//*[@text='通知']")
el2 = driver.find_element_by_xpath("//*[@text='WLAN']")

# 实例化TouchAction
action = TouchAction(driver)
# press 既可以使用 坐标 也可以使用元素

# 在移动的过程中 wait是必不可少
# action.press(el1).wait(500).move_to(el2)
action.press(x=270,y=640).wait(500).move_to(x=270,y=320)
action.release()

# 执行  模拟手势的使用  TouchAction 进行模拟手势的时候  一定要记得执行操作
action.perform()
time.sleep(3)

# 关闭app
driver.close_app()
# 释放资源
driver.quit()

7、滑动案例

from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(1)

el1 = driver.find_element_by_xpath("//*[@text='声音']")
el2 = driver.find_element_by_xpath("//*[@text='WLAN']")

action = TouchAction(driver)
action.press(el1).wait(500).move_to(el2)
action.release()

# 需要执行上面的操作
action.perform()
time.sleep(1)

driver.find_element_by_xpath("//*[@text='安全']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='屏幕锁定']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='图案']").click()
time.sleep(1)

# 按下的位置 105 450  x 165  y 165

action.press(x=105,y=450).wait(200).move_to(x=270,y=450).wait(200).move_to(x=435,y=450).wait(200).move_to(x=270,y=615)
    .wait(200).move_to(x=105,y=780).wait(200).move_to(x=270,y=780).wait(200).move_to(x=435,y=780)
action.release()
action.perform()



time.sleep(2)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()

8、其他操作

from appium import webdriver
import time

# 连接移动设备所必须的参数
desired_caps = {}

# 当前要测试的设备的名称
desired_caps["deviceName"] = "127.0.0.1:62001"
# 系统
desired_caps["platformName"] = "Android"
# 系统的版本
desired_caps["platformVersion"] = "7.1"
# 要启动app的名称(包名)
desired_caps["appPackage"] = "com.android.settings"
# 要启动的app的哪个界面
desired_caps["appActivity"] = ".Settings"

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

time.sleep(1)
# print(driver.page_source)
print(driver.device_time)

print(driver.network_connection)

driver.get_screenshot_as_file("jietu.png")

# driver.save_screenshot()
driver.open_notifications()

time.sleep(3)
# 关闭app
driver.close_app()
# 释放资源
driver.quit()

最后我用的是夜神模拟器,可以不用连接手机

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>