appium+ios+python第一个例子

本文介绍了一个使用Appium进行iOS自动化测试的例子,涉及点击分享按钮后出现的授权网页(WebView),讲解了如何在Native和WebView之间切换以进行元素定位。通过Safari查看WebView源码定位元素,并提供了相关XPath语法链接。文章还提到了在Appium中获取和切换上下文的方法,以确保在不同环境中正确操作。

配置好appium环境后的第一个例子,大概流程是:

1、点击分享按钮后,弹出授权页面,授权页面是个新浪的webview

2、然后输入用户名、密码,点击登录,授权成功跳回到原应用

3、点击分享


很简单的操作,但这里面涉及到一个webview,对于初学者来说,纠结了半天,下面跟大家分享下,主要讲webview。

在一个app里用到webview算是混合应用了,appium无法直接和webview互相调用,所以有个切换模式的概念,只有切换到

webview之后才能获取到webview上的元素,而且inspector提供了定位元素的方法,但是它定位webview的元素的xpath是没法

用的,因为它定位的是在Native context下的,但是我们要用的是webview context下的xpath;

重要的是当完成webview上操作后,我们要记得切换到native context,才能继续定位原应用的元素进行操作;

http://testerhome.com/topics/513 该链接里介绍了如何用Safari来查看webview的源码,从而用xpath定位元素;

http://www.w3school.com.cn/xpath/xpath_syntax.asp 该链接是xpath的语法,就是如何根据html使用xpath定位元素;


下面解释为啥有切换的概念以及如何切换,我就不做翻译了,直接贴出来了,下面的代码中我们可以 print driver.contexts 看看都有哪些context,且每个context的名字

下面代码链接:https://github.com/appium/python-client(搜webview就能看到相应代码)

Switching between 'Native' and 'Webview'

For mobile testing the Selnium methods for switching between windows was previously commandeered for switching between native applications and webview contexts. Methods explicitly for this have been added to the Selenium 3 specification, so moving forward these 'context' methods are to be used.

To get the current context, rather than calling driver.current_window_handle you use

current = driver.current_context

The available contexts are not retrieved using driver.window_handles but with

driver.contexts

Finally, to switch to a new context, rather than driver.switch_to.window(name), use the comparable context method

context_name = "WEBVIEW_1"
driver.switch_to.context(context_name)

最后附上一小段代码

self.driver.find_element_by_name('分享样式1').click()
        self.driver.find_element_by_name('UMS sina icon').click()
        sleep(2)
        print self.driver.contexts
        context_name = 'WEBVIEW_1'
        self.driver.switch_to.context(context_name)
        sleep(2)
        self.driver.find_elements_by_xpath('//input[@id="userId"]')[0].send_keys('test@126.com')
        self.driver.find_elements_by_xpath('//input[@id="passwd"]')[0].send_keys('test')
        self.driver.find_elements_by_xpath('//a[@class="btnP"]')[0].click()
        sleep(2)
        self.driver.switch_to.context('NATIVE_APP')
        self.driver.find_element_by_name('UMS nav button send').click()

### PythonAppium结合实现移动应用自动化测试 #### 使用PythonAppium进行移动应用自动化测试的实战教程概述 对于希望使用Python作为编程语言来进行基于Appium框架下的移动应用自动化测试而言,可以构建一套完整的流程来满足不同场景的需求。由于Appium支持多样的客户端库,其中包括针对Python的支持[^1]。 #### 环境准备 确保安装了必要的软件包,比如Java Development Kit (JDK),因为Android SDK依赖于它;另外还需要设置好Android Studio及其附带的SDK管理器用于管理下载所需的Android SDK版本。对于iOS来说,则需具备Xcode环境。与此同时,还需安装Python解释器以及pip工具以便后续能够顺利安装Python绑定库`Appium-Python-Client`[^2]。 #### 编写第一个简单的测试脚本 下面展示了一个基本的例子,展示了怎样创建一个连接至本地运行着的Appium Server并操作模拟器/真机中的应用程序: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', # 或者'IOS' 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) try: element = driver.find_element_by_accessibility_id("someAccessibilityId") # 替换成实际可访问ID element.click() finally: driver.quit() ``` 这段代码实现了启动指定的应用程序,并尝试找到具有特定无障碍属性的对象点击之,完成后关闭会话[^3]。 #### 测试用例设计模式 当涉及到更复杂的业务逻辑时,建议采用页面对象模型(Page Object Model, POM)的设计思路来组织测试代码结构。POM有助于提高代码重用性维护效率,使得定位元素更加直观易懂。每一个屏幕界面都对应一个类,在此类内部封装所有可能的操作方法,而具体的测试步骤则放在独立的测试文件里调用相应的方法完成[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值