Appium Remote webdriver调用

remote webdriver的模板

默认开启4723端口接受webdriver请求

默认开启4724用于和android通讯

#coding:utf-8
#Import the common package
import os
import unittest
from appium import webdriver
from time import sleep

#设置路径信息
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

class LoginAndroidTests(unittest.TestCase):
    def setUp(self):
        #初始化测试平台
        desired_caps = {}
        desired_caps[‘platformName‘] = ‘Android‘
        desired_caps[‘platformVersion‘] = ‘4.4.2‘   #Android版本
        desired_caps[‘deviceName‘] = ‘127.0.0.1:62001‘  #连接到的设备名称,这个是夜神模拟器的名称
        #desired_caps[‘app‘] = ‘D:\apk\爱壁纸.apk‘  #app的路径
        desired_caps[‘appPackage‘] = ‘com.lovebizhi.wallpaper‘  #包名
        desired_caps[‘appActivity‘] = ‘com.lovebizhi.wallpaper.WelcomeActivity‘  #activity名称
        self.driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)

    def tearDown(self):
        self.driver.quit()

    def test(self):
        #测试导航页
        print("start test...")

        #判断是否安装爱壁纸APP
        wallpaper = self.driver.is_app_installed("com.lovebizhi.wallpaper")
        if wallpaper:
            #self.driver.remove_app("com.lovebizhi.wallpaper")
            sleep(8)
            # 点击某一壁纸图片
            self.driver.find_elements_by_id("com.lovebizhi.wallpaper:id/image1")[4].click()
            sleep(4)
            # 点击设置壁纸
            self.driver.find_element_by_id("com.lovebizhi.wallpaper:id/btSetup").click()
            sleep(5)
        else:
            self.driver.install_app("D:\apk\爱壁纸.apk")
            sleep(30)if __name__ == ‘__main__‘:
    suite =unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
    unittest.TextTestRunner(verbosity=2).run(suite)

如何查看app的appPackage和APPactivity?

1、下载apktool-new的压缩包,并解压

2、双击decode.bat运行

3、将apk拖入decode.bat中回车即可得到对应apk的文件夹

4、用记事本或notepad++等打开apk文件夹中的AndroidManifest.xml即可看到appPackage和APPactivity名称

在romote webdriver初始化的时候

desired_caps[‘appPackage‘] = ‘com.lovebizhi.wallpaper‘
desired_caps[‘appActivity‘] = ‘com.lovebizhi.wallpaper.WelcomeActivity

已经确定了是要测试哪个APP和APP中的哪个界面。直接运行Python脚本时就会跳转到对应的界面,此时在test中就不能操作在本界面中不存在的元素。否则会报错

如:想要在主体部分写卸载该APP或其他APP,就会报错

#coding:utf-8
#Import the common package
import os
import unittest
from appium import webdriver
from time import sleep

#设置路径信息
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

class LoginAndroidTests(unittest.TestCase):
    def setUp(self):
        #初始化测试平台
        desired_caps = {}
        desired_caps[‘platformName‘] = ‘Android‘
        desired_caps[‘platformVersion‘] = ‘4.4.2‘
        desired_caps[‘deviceName‘] = ‘127.0.0.1:62001‘
        #desired_caps[‘app‘] = ‘D:\apk\爱壁纸.apk‘
        desired_caps[‘appPackage‘] = ‘com.lovebizhi.wallpaper‘
        desired_caps[‘appActivity‘] = ‘com.lovebizhi.wallpaper.WelcomeActivity‘
        self.driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)

    def tearDown(self):

        self.driver.quit()

    def test_1(self):
        #测试导航页
        print("start test1...")

        #判断是否安装爱壁纸APP
        wallpaper = self.driver.is_app_installed("com.lovebizhi.wallpaper")
        if wallpaper:
            self.driver.remove_app("com.lovebizhi.wallpaper")
            sleep(8)
        else:
            self.driver.install_app("D:\apk\爱壁纸.apk")
            sleep(30)

if __name__ == ‘__main__‘:
    suite =unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
    unittest.TextTestRunner(verbosity=2).run(suite)

报如下错误:

所以在初始化之后就不要使用卸载或安装程序了

时间: 2024-10-09 12:58:03

Appium Remote webdriver调用的相关文章

13. Remote Webdriver

场景 简单来说,我们可以把remote webdriver理解成在远程机器上运行webdriver脚本. 想像一下最简单的一个应用场景:你和你的同事两人一起开发一段webdriver脚本,然后你们需要在一个公共的环境去运行这段脚本.为什么要在公 共的环境运行?那是因为每个人的开发机器是有差异的,但是如果用同一台测试机的话,那么环境差异的因素就可以基本排除.我们应该经常听到开发说这样的 话:"这个bug在我的环境上是好的啊!".因为运行环境不同而造成的bug比比皆是,因此我们需要一个统一

webDriver API——第11部分Remote WebDriver

The WebDriver implementation. class selenium.webdriver.remote.webdriver.WebDriver(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=None, browser_profile=None, proxy=None, keep_alive=False) Bases: object Controls a browser by send

webdriver调用ie浏览器报错

webdriver调用ie浏览器报错: org.openqa.selenium.NoSuchWindowException: Unable to find element on closed 解决方法: System.setProperty("webdriver.ie.driver", "C:\\Users\\ssatyanarayana\\Downloads\\IEDriverServer.exe"); // opening the IE with recomen

webdriver 调用浏览器失败

用webdriver调用浏览器的时候发生了错误提示:raise WebDriverException("Can not connect to the Service %s" % self.path)selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver 大致意思是链接不到服务,找不到路径解决方法:一.用百度查了一下,并没有发现类似的问题,后面用

appium---from appium import webdriver报错提示“Unresolved import webdriver”

报错提示: from appium import webdriver提示Unresolved import webdriver 报错原因:没有安装Appium_Python_Client 解决办法: 终端执行: 第一种:pip install Appium_Python_Client 第二种:git clone https://github.com/appium/python-client.git 原文地址:https://www.cnblogs.com/syw20170419/p/890072

WebDriver 调用ie浏览器报错(转)

报错信息如下:Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.Build info: version: '2.31.0', revision

webdriver调用chrome浏览器

System.setProperty("webdriver.chrome.driver", "D:/webDriver/chromedriver.exe"); System.setProperty("webdriver.chrome.bin", "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"); driver =new ChromeDriver();

Python webdriver调用Chrome报错

报错信息如下: selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home 解决: 下载chromedriver,放在指定路径下,并将路径添加至path环境变量(属性 -- 高级系统设置 -- 高级 -- 环境变量)

ios+appium 自动化测试,启动以及调用app

#coding:utf-8 from appium import webdriver import time cap={ "platformName":"iOS", "platformVersion":"11.3", "deviceName":"iPad Air", "automationName":"XCUITest", "app&qu