Appium 怎么用元素坐标进行点击事件

Zero.0 · 2017年03月29日 · 最后由 hnemma 回复于 2017年07月12日 · 2035 次阅读

在做测试脚本的时候,比如我知道一个元素的坐标(107,30)和名称,但是我只知道怎么用查找名字的方法进行点击事件,我怎么用这个 “点击元素坐标的方式” 代替下面这种 “查找元素名字的方式” 进行点击事件啊!

.elementByXPath('//XCUIElementTypeStaticText[@name="小学校 1年"]')
.click()
共收到 3 条回复 时间 点赞

self.driver.tap([(X, Y)])
X,Y 分别为横坐标,和纵坐标

appium 获取信息类 API

(1)获取默认系统语言对应的 Strings.xml 文件内的数据。

get_app_string()

(2)查找某一个语言环境对应的字符串文件 Strings.xml 内数据。

get_app_string(String language)

(3)获取当前 activity,比如(.ApiDemos)

current_activity()

App 安装与卸载类 API

(1)根据 bundleId 来判断该应用是否已经安装

is_app_installed(String bundleId)

(2)安装 app,appPath 为应用的本地路径

install_app(String appPath)

(3)卸载 app.bundleId 在 android 中代表的是包名,而在 iOS 中有专门的 bundleId 号。

remove_app(String bundleId)

(4)关闭应用,其实就是按 home 键把应用置于后台

close_app()

(5)启动应用

launch_app()

(6)先 closeApp 然后在 launchAPP

reset_app()

文件操作类 API

(1)将字符数组用 64 位格式写到远程目录的某个文件中。也可以理解为把本地文件 push 到设备上。

push_file(String remotePath, byte[] base64Data)

(2)将设备上的文件 pull 到本地硬盘上

pull_file(String remotePath)

(3)将设备上的文件夹 pull 到本地硬盘上,一般远程文件为/data/local/tmp 下的文件。

pull_folder(String remotePath)

设置相关类 API

(1)设置手机的网络连接状态,可以开关蓝牙、wifi、数据流量。通过 NetworkConnectionSetting 中的属性来设置各个网络连接的状态。

set_network_connect(NetworkConnectionSetting connection)

(2)得到当前网络的状态

get_network_connection()

用户操作类 API

(1)ios 隐藏键盘

hide_keyboard()

(2)隐藏键盘,只能用于 ios 上。

hide_keyboard(String strategy, String keyName)

(3)按下某个键,具体哪个键由 key 值决定,key 值定义在 AndroidKeyCode 类中

send_key_event(int key)

(4)执行一个 touch 动作,该 touch 动作是由 TouchAction 封装的。

perform_touchAction(TouchAction touchAction)

(5)点击 element 控件中心点按下,duration*5 毫秒秒后松开,如此重复 fingers 次。

tap(int fingers, WebElement element, int duration)

(6)点击 (x,y) 点按下,duration*5 毫秒后松开,如此重复 fingers 次。

tap(int fingers, int x, int y, int duration)

(7)从 (startx,starty) 滑到(endx,endy),分 duration 步滑,每一步用时是 5 毫秒。

swipe(int startx, int starty, int endx, int endy, int duration)

(8)2 个手指操作控件,从对角线向中心点滑动。

pinch(WebElement el)

(9)以(x,y)为基准,计算得出(x,y-100),(x,y+100) 两个点,然后 2 个手指按住这两个点同时滑到(x,y)

pinch(int x, int y)

(10) 与 pinch(el) 的动作刚好相反。两个手指由控件的中心点慢慢向控件的左顶点后右底点滑动。

zoom(WebElement el)

(11) 和 pinch(x,y) 相反。两个手指从(x,y)点开始向(x,y-100)和(x,y+100)滑动。

zoom(int x, int y)

(12) 锁屏多少秒后解锁

lock_screen(int seconds)

(13) 模拟摇晃手机

shake()

(14) 滚动到某个 text 属性为指定的字符串的控件

scroll_to(String text)

(15) 滚动方向由 element1 到 element2

scroll(element1,element2)

(16) 滚动到某个 text 属性包含传入的字符串的控件

scroll_to_exact(String text)

(17) 设置上下文

context(String name)

(18) 可用上下文

get_context_handles()

(19) 当前上下文

get_context()

(20) 设置屏幕横屏或者竖屏

rotate(ScreenOrientation orientation)

(21) 获取当前屏幕的方向

get_orientation()

获取控件类 API

seleniumdriver

find_element_by_id
find_elements_by_id
find_element_by_name
find_elements_by_name
find_element_by_link_text
find_elements_by_link_text
find_element_by_partial_link_text
find_elements_by_partial_link_text
find_element_by_tag_name
find_elements_by_tag_name
find_element_by_xpath
find_elements_by_xpath
find_element_by_class_name
find_elements_by_class_name
find_element_by_css_selector
find_elements_by_css_selector

appiumdriver

find_element_by_ios_uiautomation
find_elements_by_ios_uiautomation
find_element_by_android_uiautomator
find_elements_by_android_uiautomator
find_element_by_accessibility_id
find_elements_by_accessibility_id

AppiumDriver 的辅助类

主要针对手势操作,比如滑动、长按、拖动等。TouchAction 的原理是讲一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行。

TouchAction()

(1)在控件上执行 press 操作

press(WebElement el)

(2)在坐标为(x,y)的点执行 press 操作

press(int x, int y)

(3)在控件 el 的左上角的 x 坐标偏移 x 单位,y 左边偏移 y 单位的坐标上执行 press 操作。

press(WebElement el, int x, int y)

(4)释放操作,代表该系列动作的一个结束标志。

release()

(5)以 el 为目标,从另一个点移动到该目标上

move_to(WebElement el)

(6)以(x,y)点为目标,从另一个点移动到该目标上

move_to( int x, int y)

(7) 在控件的中心点上敲击一下

tap(WebElement el)

(8) 在(x,y)点轻击一下

tap(int x, int y)

(9) 以控件 el 的左上角为基准,x 轴向右移动 x 单位,y 轴向下移动 y 单位。在该点上轻击。

tap(WebElement el, int x, int y)

(10) 代表一个空操作,等待一段时间

wait_action()

(11) 等待 ms 秒

wait_action(int ms)

(12) 控件长按

long_press(WebElement el)

(13) 点长按

long_press(int x, int y)

(14)偏移点长按

long_press(WebElement el, int x, int y)

(15)取消执行该动作

cancel()

先查找元素,找到元素后获取坐标,然后用坐标点击方法咯

我想请教一下,如何获得页面上任一元素的坐标?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册